javascript的發(fā)展史
? ? 1裳食、1992年 各拷,Nombas 為自己的軟件寫(xiě)一款腳本語(yǔ)言 C-- --》 ScritEase ,可以嵌入在網(wǎng)頁(yè)中運(yùn)行
? ? 2疚鲤、1995年 ,Netscape(網(wǎng)景) Navigator2.0 --> LiveScript --> Javascript ,Java 與 Javascript之間沒(méi)有任何關(guān)系
? ? 3挡毅、1996年 样刷,Microsoft 在 IE3.0 中發(fā)布 JS的克隆版 --> JScript
? ? 4仑扑、1997年 ,Javascript 1.1 版本 作為 草案 提交給了 ECMA(歐洲計(jì)算機(jī)制造商聯(lián)合會(huì)) ECMA-262標(biāo)準(zhǔn) ECMAScript 作為 JS
javascript的組成:
? ? ECMAscript? Dom? Bom
javascript的語(yǔ)法
? ? 1.在<script></script>標(biāo)簽中寫(xiě)
? ? ? ? <script>
? ? 代碼
? </script>
? ? 2.外部腳本文件
? ? 1)置鼻、
? ? 創(chuàng)建腳本文件并編寫(xiě) 腳本 腳本文件:***.js
? ? 2)镇饮、引入外部腳本文件
? ? <script src="腳本文件路徑"></script>
注意:
? ? 1、必須是成對(duì)的 script標(biāo)簽
? ? 2箕母、該對(duì)標(biāo)記中储藐,不允許出現(xiàn)任何于js無(wú)關(guān)的內(nèi)容? ?
? 3.注釋
? ? 1)俱济、單行注釋
? ? // 單行注釋
? ? 2)、多行注釋
? ? ? ? /*
? ? ? ? * 多
? ? ? ? * 行
? ? ? ? * 內(nèi)
? ? ? ? * 容
? ? ? ? */
? ? 4.嚴(yán)格區(qū)分大小寫(xiě)
? ? ? console.log(""); 正確
? ? ? Console.log("");錯(cuò)誤
變量和常量
? ? 1.變量:內(nèi)存中的一段存儲(chǔ)空間
? ? 2. 變量的聲明:
? ? 1)钙勃、聲明
? ? var? 變量名;
? ? 2)蛛碌、賦值
? 變量名=值;
? ? 3)、聲明和賦值合一塊
? var 變量名=值;
? ? 4)辖源、注意
? ? 聲明變量時(shí)可以不加 var
? var stuname="張三豐";== stuname="張三豐";
? 如果省略了 var 蔚携, 那么聲明的就是"全局變量",有可能造成 "全局污染"
? ? 5)克饶、如果聲明變量沒(méi)有賦值的話(huà)酝蜒,那么將自動(dòng)賦值為 undefined
? ? 3、一次性聲明多個(gè)變量
? ? stuname矾湃,stuage亡脑,stugender
? var stuname;? var stuage;? var stugender;
一次性聲明多個(gè)變量 使用一個(gè) var , 多變量名之間 用 ,分隔
? ? ? ? var stuname,stuage,stugender;
? ? 4.變量的命名規(guī)范
? ? 1)洲尊、可以包含字母远豺、數(shù)字奈偏、下劃線坞嘀、$
? ? ? ? ? var? +name; 錯(cuò)誤 ,不能有 +
? ? 2)惊来、不能以數(shù)字開(kāi)頭
? ? ? var 1name; 錯(cuò)誤 var name1; 正確
? ? ? var $name; 正確 var _name; 正確
? ? 3)丽涩、盡量見(jiàn)名知意
? ? ? var a;
? ? ? var b,c,d,e,f,g,aab,aac;
? ? ? 以上方式, 不推薦
? ? ? var username; var salary;
? ? 5裁蚁、可以采用 "匈牙利命名法","駝峰命名法","下劃線命名法"
? ? 1)矢渊、駝峰命名法
? ? 如果 變量名 是由多個(gè)單詞組成的名詞,那么從第二個(gè)單詞開(kāi)始枉证,每個(gè)單詞的首字符變大寫(xiě)矮男。
? ? var userName;? ? ? var userSalary;
? ? var stuJavaScore
? ? 2)、下劃線命名法
? ? var _userName;一般用于全局變量命名
? ? var user_name;
常量:一旦聲明就不可以改變的值叫做常量? 比如:1天=24小時(shí)? ? 1小時(shí)=60分鐘? ? 太陽(yáng)每天東升西落
? ? 1.聲明常量:
? 1)聲明常量用 const,常量名一般大寫(xiě),聲明常量必須賦值
? 2)聲明常量并賦值 const DAY=24;? ? const PI=3.14;
? ? 數(shù)據(jù)類(lèi)型:
? ? 1.數(shù)字:number? 整數(shù)和小數(shù)? var a=5;? var b=13.5; var c=0.5;
? ? 2.字符串:string? 只要有引號(hào)的都是字符串(單引號(hào)/雙引號(hào))
? ? var str='hello world';? var c='123';? var d="你好";
? 3. 布爾:boolean
? 只有兩個(gè)值? true真? false假? ? ? var boo1=true;? var boo2=false;
var boo3='true';string
? ? var boo4='false';string
? ? 布爾值在做運(yùn)算的時(shí)候
? ? true會(huì)轉(zhuǎn)換為1? false會(huì)轉(zhuǎn)換為0?
? ? true+false=1? ? ? 1+true=2
? ? 4.undefined:定義的
? ? 5.null 空
? ? 6.object 對(duì)象
? ? 聲明一個(gè)變量沒(méi)賦值會(huì)返回一個(gè)undefined
? ? ? var b;
? ? ? console.log(b);
? 直接輸出一個(gè)未聲明的變量會(huì)報(bào)錯(cuò)?
? ? console.log(c)
隱式轉(zhuǎn)換
1.number+number
? ? ? ? var a=3;
? ? ? ? var b=5;
? ? ? ? console.log(a+b);
2.number+string? 拼接
? ? ? ? var a=3;
? ? ? ? var b='5';
? ? ? ? var c='hello world';
? ? ? ? console.log(a+c);
3.number+boolean
? ? ? ? var a=3;
? ? ? ? var b=true;
? ? ? ? var c=false;
? ? ? ? console.log(a+c);
? ? ? ? console.log(a+b);
4.string+boolean? 拼接
? ? ? ? var a='3';
? ? ? ? var b=true;
? ? ? ? console.log(a+b);
5 number+undefined
? ? ? ? var a=3;
? ? ? ? var b;//undefined
? ? ? ? console.log(typeof(a+b));
? ? ? ? not a number
? ? ? ? 不是一個(gè)數(shù)字
6.numberstring +undefined
? ? ? ? var a='3';
? ? ? ? var b;//undefined
? ? ? ? console.log(typeof (a+b));
總結(jié):? ? number+string? 拼接
? ? ? ? number+boolean? ? ? boolean轉(zhuǎn)number
? ? ? ? number+undefined? NAN
? ? ? ? boolean+boolean? ? 求和數(shù)據(jù)類(lèi)型
? ? ? ? string加任何東西都是拼接
判斷數(shù)據(jù)類(lèi)型:
? ? ? ? typeof
數(shù)據(jù)類(lèi)型:number
? ? ? ? isNaN:is? not a number
? ? ? ? ? ? ? ? ? 是 ,? ? 不是一個(gè)數(shù)字
? ? ? ? 作用:判斷一個(gè)非數(shù)字? ? 如果是數(shù)字返回false,如果不是一個(gè)數(shù)字返回true
? ? ? ? var a=3;
? ? ? ? var b='5';
? ? ? ? var c=true;
? ? ? ? console.log(isNaN(a));false
? ? ? ? console.log(isNaN(b));true
聲明提前
? ? ? ? console.log(a);
? ? ? ? var a=3,
? ? ? ? js在執(zhí)行的時(shí)候會(huì)自動(dòng)把var提到標(biāo)簽頂部
? ? ? ? 但是賦值不會(huì)被提到頂部
? ? ? ? 所以就等于這是一個(gè)沒(méi)有賦值的變量
? ? ? ? 沒(méi)有賦值的變量會(huì)返回? undefined
? ? ? ? var a;
? ? ? ? console.log(a);
? ? ? ? a=3;
顯示轉(zhuǎn)換/強(qiáng)制轉(zhuǎn)換
parseInt();轉(zhuǎn)換成整數(shù)
? ? ? ? var a='5';
? ? ? ? ? var b=parseInt(a);
? ? ? ? ? console.log(typeof a);
? ? ? ? console.log(isNaN(a));
? ? ? ? parseFloat();轉(zhuǎn)換成小數(shù)
? ? ? ? var a='1.01';
? ? ? ? var b=parseFloat(a);
? ? ? ? console.log(b);
? ? ? ? console.log(typeof b);
Number();轉(zhuǎn)換成number類(lèi)型
? ? ? var a='5';
? ? ? ? var b=Number(a);
? ? ? ? console.log(b);
? ? ? ? console.log(typeof b);
toString();轉(zhuǎn)換成字符串
? ? ? var a=true;
? ? ? var b=a.toString();
? ? ? console.log(b);
? ? ? console.log(typeof b);
toFixed();按要求保留小數(shù)位數(shù)
? ? ? var a=13.956;
? ? ? var b=a.toFixed(4);
? ? ? console.log(typeof b);
一室谚、隱式轉(zhuǎn)換結(jié)論
1毡鉴、數(shù)字 + 字符串 :將數(shù)字轉(zhuǎn)換成字符串
2、數(shù)字 + boolean :將 boolean 轉(zhuǎn)換為 number類(lèi)型
3秒赤、數(shù)字 + undefined :結(jié)果為 NaN猪瞬,NaN的類(lèi)型是 number
4、字符串 + boolean :將boolean 轉(zhuǎn)換成字符串
5入篮、boolean + boolean :都轉(zhuǎn)換為number在做相加運(yùn)算
注:NaN:not a number? 判斷一個(gè)非數(shù)字? ? 如果不是一個(gè)數(shù)字返回true陈瘦,如果是一個(gè)數(shù)字返回false
? ? ? 案例: var str="hello world";
? ? ? ? ? ? ? ? ? ? var str1=isNaN(str);
? ? ? ? ? ? ? ? ? ? console.log(str1);
二、顯示轉(zhuǎn)換/強(qiáng)制轉(zhuǎn)換
? ? ? 1.toString()? 將任意類(lèi)型轉(zhuǎn)換為字符串類(lèi)型
? ? ? ? ? ? ? var? num=5;
? ? ? ? ? ? ? var str=num.toString();
? ? ? ? ? ? ? console.log(typeof str);
? ? ? 2.parseInt(); 將一個(gè)數(shù)據(jù)轉(zhuǎn)換為整數(shù)
? ? ? ? ? ? ? var? num=5.5;
? ? ? ? ? ? ? var str=parseInt(num);
? ? ? ? ? ? ? console.log(str);//5
? ? ? ? ? ? ? console.log(typeof str);//number
? ? ? 3.parseFloat()? 將一個(gè)數(shù)據(jù)轉(zhuǎn)換為小數(shù)
? ? ? ? ? ? ? var? num=.5;
? ? ? ? ? ? ? var str=parseFloat(num);
? ? ? ? ? ? ? console.log(typeof str);//0.5
? ? ? ? ? ? ? console.log(typeof str);//number
? ? ? ? 4.Number? 將一個(gè)數(shù)據(jù)轉(zhuǎn)換為number類(lèi)型
? ? ? ? ? ? ? var str="35.5你好";
? ? ? ? ? ? ? var str1=Number(str);
? ? ? ? ? ? ? console.log(str);
三潮售、運(yùn)算符和表達(dá)式
? ? ? ? 1.算數(shù)運(yùn)算符
? ? ? ? ? + , - , * , / ,
? ? ? ? %:模,計(jì)算兩個(gè)相除的數(shù)字的余數(shù)
? ? ? ? 10 % 3 = 1
? ? ? ? 10.5 % 3 = 1.5
? ? ? ? ? ? ? ? ? ...
? ? ++,-- 運(yùn)算符痊项,單目運(yùn)算符
? ? ++:自增加一
? ? ++在前 :先自身加一,在賦值
? ? var a=5;
? ? var b=++a;
? ? //先把a(bǔ)的值自增+1
? ? //再把自增后的賦值給b
? ? ++在后 :先賦值,在自增加一
? ? var a=5;
? ? var b=a++;
? ? //先把a(bǔ)的值賦值給b
? ? //再自增加一
? ? --:自減減一
? ? --和++的性質(zhì)一樣
四舍五入:toFixed(保留位數(shù));
案例:
? ? var a=3.1415;
? var b=a.toFixed(2);
? document.write(b);
? ? 由算術(shù)運(yùn)算符組成的表達(dá)式锅风,叫算術(shù)表達(dá)式
? ? var a;
? ? var b;
? ? var c = a + b; //算術(shù)表達(dá)式,賦值表達(dá)式
2鞍泉、關(guān)系運(yùn)算符
? ? ? 1遏弱、作用
? ? ? ? ? ? 判斷數(shù)據(jù)之間的大小或相等關(guān)系
? ? ? 2、關(guān)系運(yùn)算符
? ? ? ? ? ? >,<,>=,<=,==,!=
由 關(guān)系運(yùn)算符所組成的表達(dá)式 稱(chēng)之為 關(guān)系表達(dá)式塞弊,關(guān)系表達(dá)式的值為boolean類(lèi)型
? ? ? ? ? ? ==漱逸,!= : 只判斷數(shù)值是否相等
? ? ? ? ? ? 全等:===? ? :類(lèi)型相同 數(shù)值相同
? ? ? ? ? 不全等:!==
? ? ? 3、邏輯運(yùn)算符
? ? ? 1游沿、作用
? ? ? ? ? ? 判斷多條件 以及 條件取反時(shí)使用
? ? ? 2饰抒、語(yǔ)法
? ? ? ? ? 1、邏輯? ? 非
? ? ? ? ? ? 對(duì)現(xiàn)有條件 取反
? ? ? ? ? 語(yǔ)法:!
? ? ? ? ? ? 2诀黍、邏輯? ? 與
? ? ? ? ? ? 有兩個(gè)條件袋坑,兩條件同時(shí)為真時(shí),表達(dá)式才為真。
? ? ? ? ? 語(yǔ)法:&&
? ? ? 3眯勾、邏輯? ? 或
? ? ? ? ? 有兩個(gè)條件枣宫,只要有一個(gè)為真,表達(dá)式就為真
? ? ? ? ? 語(yǔ)法:||
? ? ? 4吃环、運(yùn)算結(jié)果
? ? ? ? ? ? true && true : true
? ? ? ? ? true && false : false
? ? ? ? ? false && true : false
? ? ? ? ? false && false :false
? ? ? ? ? true || true : true
? ? ? ? ? true || false :true
? ? ? ? ? false || true : true
? ? ? ? ? false || false :false
? ? ? 5.條件運(yùn)算符(三目運(yùn)算符)
? ? ? 1也颤、語(yǔ)法 ? :
? ? ? 表達(dá)式1?表達(dá)式2:表達(dá)式3;
? ? ? 表達(dá)式1,值應(yīng)該為 boolean 類(lèi)型
? ? ? 如果表達(dá)式1的值為true郁轻,那么表達(dá)式2的值則作為整個(gè)表達(dá)式的值
? ? ? 如果表達(dá)式1的值為false翅娶,那么表達(dá)式3的值則作為整個(gè)表達(dá)式的值
? ? ? ex :輸入考試成績(jī),如果成績(jī)大于等于60 好唯,則輸出及格竭沫,否則輸出 不及格
? ? ? var a=prompt("請(qǐng)輸入你的成績(jī)");
? ? ? if(a>=60){
? ? ? alert("及格");
? ? ? }else{
? ? ? alert("不及格");
? ? ? }
一:運(yùn)算符和表達(dá)式
? ? ? ? 一、流程控制語(yǔ)句
? ? ? ? 1.
? ? ? ? if(條件){
? ? ? ? ? //要執(zhí)行的語(yǔ)句
? ? ? ? ? }
? ? ? ? 2.
? ? ? ? ? if(條件){
? ? //條件為true時(shí)執(zhí)行的語(yǔ)句
? ? ? ? ? }else{
? ? //條件不為true時(shí)執(zhí)行的語(yǔ)句
? ? ? ? ? }
? ? ? ? ? 3.多重條件語(yǔ)句
? ? ? ? ? if(條件){
? ? ? ? ? }else if(){
? ? ? ? ? ? }
? ? ? ? ? 4.switch .....case
? ? ? ? ? ? switch(變量){
? ? ? ? ? case 情況1:
? ? ? ? ? //要執(zhí)行的語(yǔ)句骑篙;
? ? ? ? ? break;
? ? ? ? ? case 情況2:
? ? ? ? ? //要執(zhí)行的語(yǔ)句蜕提;
? ? ? ? ? break;
? ? ? ? ? case 情況3:
? ? ? ? ? //要執(zhí)行的語(yǔ)句;
? ? ? ? ? break;
? ? ? ? ? default://以上任何一塊都沒(méi)匹配上的時(shí)候
? ? ? ? ? //要執(zhí)行的語(yǔ)句靶端;
? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? 用switch .....case完成以下練習(xí)
? ? ? ? ? ? ? 請(qǐng)輸入今天星期幾谎势,
? ? ? ? ? ? ? 星期一:億萬(wàn)富翁
? ? ? ? ? ? ? 星期二:千萬(wàn)富翁
? ? ? ? ? ? ? 星期三:百萬(wàn)富翁
? ? ? ? ? ? ? 星期四:暴發(fā)戶(hù)
? ? ? ? ? ? ? 星期五:底商戶(hù)
? ? ? ? ? ? ? 星期六:平民
? ? ? ? ? ? ? 星期日:乞丐
? ? ? ? 否則:不管飯,自己解決
? ? ? ? var a=prompt("星期幾")
? ? ? ? switch(a){
? ? ? ? case"星期一":
? ? ? ? alert("億萬(wàn)富翁");
? ? ? ? break;
? ? ? ? case"星期二":
? ? ? ? alert("千萬(wàn)富翁");
? ? ? ? break;
? ? ? ? case"星期三":
? ? ? ? alert("百萬(wàn)富翁");
? ? ? ? break;
? ? ? ? case"星期四":
? ? ? ? alert("暴發(fā)戶(hù)");
? ? ? ? break;
? ? ? ? case"星期五":
? ? ? ? alert("底商戶(hù)");
? ? ? ? break;
? ? ? ? case"星期六":
? ? ? ? alert("平民");
? ? ? ? break;
? ? ? ? ? case"星期日":
? ? ? ? alert("乞丐");
? ? ? ? break;
? ? ? ? else:
? ? ? ? alert(什么都不是");
? ? ? ? break;
? ? ? ? }
? ? ? ? switch .....case直落形式
? ? ? ? //意思就是:不管是哪種情況都做相同的事
? ? ? ? ? switch(){
? ? ? ? case 情況1:
? ? ? ? case 情況1:
? ? ? ? case 情況1:
? ? ? ? case 情況1:
? ? ? ? case 情況1:
? ? ? ? ? ? //要執(zhí)行的語(yǔ)句
? ? ? ? ? ? break;
? ? ? ? ? }