javascript的發(fā)展史
? ? 1、1992年 ,Nombas 為自己的軟件寫一款腳本語言 C--? --》 ScritEase ,可以嵌入在網(wǎng)頁中運行
2、1995年 ,Netscape(網(wǎng)景) Navigator2.0 --> LiveScript --> Javascript ,Java 與 Javascript之間沒有任何關(guān)系
? 3、1996年 ,Microsoft 在 IE3.0 中發(fā)布 JS的克隆版 --> JScript
4、1997年 ,Javascript 1.1 版本 作為 草案 提交給了? ECMA(歐洲計算機制造商聯(lián)合會) ECMA-262標(biāo)準(zhǔn)? ECMAScript 作為 JS? ? ? ? javascript的組成:ECMAscript Dom Bomjavascript的語法
1.在標(biāo)簽中寫js代碼,該標(biāo)簽可以放在頁面的任何位置 ? ? ? JS腳本
2.外部腳本文件1)、創(chuàng)建腳本文件并編寫 腳本腳本文件:***.js2)、引入外部腳本文件注意:1、必須是成對的 script2、該對標(biāo)記中,不允許出現(xiàn)任何內(nèi)容? 3.注釋? ? ? ? 1)、單行注釋單行注釋? 2)、多行注釋? ? /*? ? ? * 多? ? * 行? ? * 內(nèi)? ? * 容? ? */? ? ? ?
4.嚴(yán)格區(qū)分大小寫? ? ? ? ? console.log("");? ? ? ? ? Console.log("");錯誤? ? ? ? ? 變量和常量? ? 1.變量:內(nèi)存中的一段存儲空間?
2. 變量的聲明1)、聲明? ? ? ? var 變量名;2)、賦值? ? 變量名=值;3)、聲明變量并賦初始值? ? var 變量名=值;4)、注意?
1、聲明變量時可以不加 var 關(guān)鍵字? ? var stuname="張三豐";== stuname="張三豐";? ? ? ? ? ? ? ? ? ? ? ? 如果省略了 var 關(guān)鍵字, 那么聲明的就是"全局變量",有可能造成 "全局污染" 的效果? ? 5)、如果聲明變量沒有賦值的話,那么將自動賦值為 undefined
3、一次性聲明多個變量聲明 stuname,stuage,stugender 變量? ? var stuname;? ? var stuage;? ? var stugender;一次性聲明多個變量 使用一個 var 關(guān)鍵字, 多變量名之間 用 , 分隔? ? var stuname, stuage,stugender;
4、變量的命名規(guī)范1)、可以包含字母、數(shù)字、下劃線、$var +name; 錯誤 ,不能有 +2)、不能以數(shù)字開頭var 1name; 錯誤var name1; 正確var $name; 正確var _name; 正確3)、盡量見名知意var a;var b,c,d,e,f,g,aab,aac;以上方式, 不推薦var username;var salary;
5、可以采用 "匈牙利命名法","駝峰命名法","下劃線命名法" 1)、駝峰命名法? ? ? 如果 變量名 是由多個單詞組成的合成詞,從第二個單詞開始,每個單詞的首字符變大寫。var age;var gender;var salary;var userName;var userSalary;var stuJavaScore2)、下劃線命名法var _userName;一般用于全局變量命名var user_name;常量:一旦聲明就不可以改變的值叫做常量? ? ? ? 比如:1天=24小時? 1小時=60分鐘? 太陽每天東升西落?
1.聲明常量的方法:? ? 1)聲明常量用 const,常量名一般大寫,聲明常量必須賦值? ? ? ? const DAY;? ? ? ? ? ? const PI;? ? 2)聲明常量并賦值? ? ? ? const DAY=24;? ? ? ? const PI=3.14;? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)類型:? 數(shù)字:number? ? ? 整數(shù)和小數(shù)? ? var a=5;? ? var b=13.5;var c=0.5;? 字符串:string? ? 只要有引號的都是字符串(單/雙)? ? var str='hello world';? ? var c='123';? ? var d="你好"; 布爾:boolean只有兩個值 true真? false假? ? ? var boo1=true;? ? var boo2=false;? ? ? var boo3='true';string? ? ? var boo4='false';string? ? ? 布爾值在做運算的時候? ? ? true會轉(zhuǎn)換為1? ? ? false會轉(zhuǎn)換為0? ? ? true+false=1? ? ? 1+true=2? ? ? ? undefined:未定義的?
5.null? 空? ? ?
6.object? 對象? ? ? ? ? ? var a=5;? ? ? ? console.log(a);? ? 聲明一個變量沒賦值會返回一個undefined? ? ? ? var b;? ? ? ? console.log(b);? ? 直接輸出一個未聲明的變量會報錯? ? ? ? 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));? ? NaN:not a number? 不是一個數(shù)字? ? NAN是一個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ù)類型:? ? typeofNaN :not a number? 不是一個數(shù)字 數(shù)據(jù)類型:number isNaN:is not a number? 是? ? 不是一個數(shù)字? ? ? ? 作用:判斷一個非數(shù)字? ? 如果是數(shù)字返回:? 如果不是一個數(shù)字返回:var a=3;var b='5';var c=true;? console.log(isNaN(b));falseconsole.log(isNaN(b));true聲明提前? console.log(a);var a=3;js在執(zhí)行的時候會自動把var提到標(biāo)簽頂部
但是賦值不會被提到頂部
所以就等于這是一個沒有賦值的變量
沒有賦值的變量會返回? undefined
? ? var a;
? ? console.log(a);
? ? a=3; n
顯示轉(zhuǎn)換/強制轉(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類型
? ? ? 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類型
3、數(shù)字 + undefined :結(jié)果為 NaN,NaN的類型是 number
4、字符串 + boolean :將boolean 轉(zhuǎn)換成字符串
5、boolean + boolean :都轉(zhuǎn)換為number在做相加運算
? ? ? ? ? 注:NaN:not a number? 判斷一個非數(shù)字? ? 如果不是一個數(shù)字返回true,如果是一個數(shù)字返回false
? ? ? ? ? ? 案例: var str="hello world";
? ? ? ? ? ? ? ? ? var str1=isNaN(str);
? ? ? ? ? ? ? ? ? console.log(str1);
二、顯示轉(zhuǎn)換/強制轉(zhuǎn)換
? ? ? ? 1.toString()? 將任意類型轉(zhuǎn)換為字符串類型
? ? ? ? ? ? ? var? num=5;
? ? ? ? ? ? ? var str=num.toString();
? ? ? ? ? ? ? console.log(typeof str);
? ? ? ? 2.parseInt(); 將一個數(shù)據(jù)轉(zhuǎn)換為整數(shù)
? ? ? ? ? ? ? var? num=5.5;
? ? ? ? ? ? ? var str=parseInt(num);
? ? ? ? ? ? ? console.log(str);//5
? ? ? ? ? ? ? console.log(typeof str);//number
? ? ? ? 3.parseFloat()? 將一個數(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? 將一個數(shù)據(jù)轉(zhuǎn)換為number類型
? ? ? ? ? ? ? var str="35.5你好";
? ? ? ? ? ? ? var str1=Number(str);
? ? ? ? ? ? ? console.log(str);
三、運算符和表達(dá)式
? ? ? ? 1.算數(shù)運算符
? ? ? ? ? ? ? ? +,-,*,/,
? ? ? ? ? ? ? ? %:模,計算兩個相除的數(shù)字的余數(shù)
? ? 10 % 3 = 1
? ? 10.5 % 3 = 1.5
? ? ...
? ? ++,-- 運算符,單目運算符
? ? ++:自增加一
? ? ++在前 :先自身加一,在賦值
var a=5;
var b=++a;
//先把a的值自增+1
//再把自增后的賦值給b
++在后 :先賦值,在自增加一
var a=5;
var b=a++;
//先把a的值賦值給b
//再自增加一
? ? --:自減減一
--和++的性質(zhì)一樣
四舍五入:toFixed(保留位數(shù));
案例:
? ? var a=3.1415;
var b=a.toFixed(2);
document.write(b);
? ? 由算術(shù)運算符組成的表達(dá)式,叫算術(shù)表達(dá)式
? ? var a;
? ? var b;
? ? var c = a + b; //算術(shù)表達(dá)式,賦值表達(dá)式
? ? ? ? 2、關(guān)系運算符
? ? 1、作用
? ? 判斷數(shù)據(jù)之間的大小或相等關(guān)系
? ? 2、關(guān)系運算符
? ? >,<,>=,<=,==,!=
由 關(guān)系運算符所組成的表達(dá)式 稱之為 關(guān)系表達(dá)式,關(guān)系表達(dá)式的值為boolean類型
? ? ? ? ? ? ? ? ? ? ==,!= : 只判斷數(shù)值是否相等
全等:===
類型相同 數(shù)值相同
不全等:!==
3、邏輯運算符
1、作用
判斷多條件 以及 條件取反時使用
2、語法
1、邏輯? ? 非
對現(xiàn)有條件 取反
語法:!
2、邏輯? ? 與
有兩個條件,兩條件同時為真時,表達(dá)式才為真。
語法:&&
3、邏輯? ? 或
有兩個條件,只要有一個為真,表達(dá)式就為真
語法:||
3、運算結(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
? ? ? ? ? ? 4.條件運算符(三目運算符)
? ? 1、語法
? :
表達(dá)式1?表達(dá)式2:表達(dá)式3;
表達(dá)式1,值應(yīng)該為 boolean 類型
如果表達(dá)式1的值為true,那么表達(dá)式2的值則作為整個表達(dá)式的值
如果表達(dá)式1的值為false,那么表達(dá)式3的值則作為整個表達(dá)式的值
ex :輸入考試成績,如果成績大于等于60 ,則輸出及格,否則輸出 不及格
var a=prompt("請輸入你的成績");
if(a>=60){
alert("及格");
}else{
alert("不及格");
}
一:運算符和表達(dá)式
? ? ? ? ? ? 一、流程控制語句
? ? ? 1.
? ? ? if(條件){
? ? ? ? //要執(zhí)行的語句
? ? ? }
? ? ? ? ? 2.
? ? ? ? ? if(條件){
//條件為true時執(zhí)行的語句
? ? ? ? ? }else{
//條件不為true時執(zhí)行的語句
? ? ? ? ? }
? 3.多重條件語句
? if(條件){
? }else if(){
? }
? ? ? ? 4.switch .....case
? ? ? ? ? ? switch(表達(dá)式/變量){
case 情況1:
? ? //要執(zhí)行的語句;
? ? break;
case 情況2:
? ? //要執(zhí)行的語句;
? ? break;
case 情況3:
? ? //要執(zhí)行的語句;
? ? break;
default://以上任何一塊都沒匹配上的時候
? //要執(zhí)行的語句;
? ? break;
? ? ? ? ? ? 用switch .....case完成以下練習(xí)
? ? ? ? ? ? ? 請輸入今天星期幾,
? ? ? ? ? ? ? 星期一吃:米飯
? ? ? ? ? ? ? 星期二:吃饅頭
? ? ? ? ? ? ? 星期三:吃面包
? ? ? ? ? ? ? 星期四:吃包子
? ? ? ? ? ? ? 星期五:吃餃子
? ? ? ? ? ? ? 星期六:吃油條
? ? ? ? 否則:不管飯,自己解決
? ? ? ? var a=prompt("今天星期幾")
switch(a){
case"星期一":
alert("米飯");
break;
case"星期二":
alert("饅頭");
break;
case"星期三":
alert("面包");
break;
case"星期四":
alert("包子");
break;
case"星期五":
alert("餃子");
break;
case"星期六":
alert("油條");
break;
else:-
alert("不管飯,自己解決");
break;
}
? ? ? ? switch .....case直落形式
? ? ? ? //即不管是哪種情況都做相同的事
? ? ? ? ? switch(){
case 情況1:
case 情況1:
case 情況1:
case 情況1:
case 情況1:
? //要執(zhí)行的語句
? break;
? ? ? ? ? }