javascript的發(fā)展史
? ? 1、1992年 佃声,Nombas 為自己的軟件寫一款腳本語言 ScritEase ,可以嵌入在網(wǎng)頁中運(yùn)行
? ? 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(歐洲計算機(jī)制造商聯(lián)合會) ECMA-262標(biāo)準(zhǔn) ECMAScript 作為 JS
javascript的組成:
? ? ECMAscript? Dom? Bom
javascript的語法
? ? 1.在<script></script>標(biāo)簽中寫
? ? ? ? <script>
? ? 代碼
? </script>
? ? 2.外部腳本文件
? ? 1)盹舞、
? ? 創(chuàng)建腳本文件并編寫腳本? 腳本文件:? ? ? ? ? ? ? ? ***.js
? ? 2)姨夹、引入外部腳本文件
? ? <script src="腳本文件路徑"></script>
注意:
? ? 1、必須是成對的 script標(biāo)簽
? ? 2矾策、該對標(biāo)記中磷账,不允許出現(xiàn)任何于js無關(guā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)绰咽、注意
? ? 聲明變量時可以不加 var
? var stuname="張三豐";== stuname="張三豐";
? 如果省略了 var 摔癣, 那么聲明的就是"全局變量"酬凳,有可能造成 "全局污染"
? ? 5)、如果聲明變量沒有賦值的話檐蚜,那么將自動賦值為 undefined
? ? 3蟆技、一次性聲明多個變量
? ? stuname玩敏,stuage斗忌,stugender
? var stuname;? var stuage;? var stugender;
一次性聲明多個變量 使用一個 var , 多變量名之間 用 ,分隔
? ? ? ? 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 userName;? ? ? var userSalary;
? ? var stuJavaScore
? ? 2)毁欣、下劃線命名法
? ? var _userName;
? ? var user_name;
常量:一旦聲明就不可以改變的值叫做常量? 比如:1天=24小時? ? 1小時=60分鐘? ? 太陽每天東升西落
? ? 1.聲明常量:
? 1)聲明常量用 const,常量名一般大寫,聲明常量必須賦值
? 2)聲明常量并賦值
? ? ? const DAY=24;? ? const PI=3.14;?
? ? 數(shù)據(jù)類型:
? ? 1.數(shù)字:number? 整數(shù)和小數(shù)?
? ? ? var a=5;? var b=13.5; var c=0.5;
? ? 2.字符串:string? 只要有引號的都是字符串(單引號/雙引號)
? ? var str='hello world';? var c='123';? var d="你好";
? 3. 布爾:boolean
? 只有兩個值? true真? false假? ? ? var boo1=true;? var boo2=false;
var boo3='true';string?
? ? var boo4='false';string
? ? 布爾值在做運(yùn)算的時候
? ? true會轉(zhuǎn)換為1? false會轉(zhuǎn)換為0? ?
? ? true+false=1? ? ? 1+true=2
? ? 4.undefined:定義的
? ? 5.null 空
? ? 6.object 對象
? ? 聲明一個變量沒賦值會返回一個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;
? ? ? ? console.log(typeof(a+b));
? ? ? ? not a number
? ? ? ? 不是一個數(shù)字
6.numberstring +undefined
? ? ? ? var a='3';
? ? ? ? var b;?
? ? ? ? console.log(typeof (a+b));
總結(jié):? ? number+string? 拼接
? ? ? ? number+boolean? ? ? boolean轉(zhuǎn)number
? ? ? ? number+undefined? ? NAN
? ? ? ? boolean+boolean? ? 求和數(shù)據(jù)類型
? ? ? ? string加任何東西都是拼接
判斷數(shù)據(jù)類型:
? ? ? ? typeof
數(shù)據(jù)類型:number
? ? ? ? isNaN:is? ? not a number
? ? ? ? ? ? ? ? ? ? 是 ,? 不是一個數(shù)字
? ? ? ? 作用:判斷一個非數(shù)字? ? 如果是數(shù)字返回false,如果不是一個數(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í)行的時候會自動把var提到標(biāo)簽頂部
? ? ? ? 但是賦值不會被提到頂部
? ? ? ? 所以就等于這是一個沒有賦值的變量
? ? ? ? 沒有賦值的變量會返回? 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類型
? ? ? 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在做相加運(yùn)算
注:NaN:not a number? 判斷一個非數(shù)字? ? 如果不是一個數(shù)字返回true纲酗,如果是一個數(shù)字返回false
? ? ? 案例: var str="hello world";
? ? ? ? ? ? ? ? ? ? var str1=isNaN(str);
? ? ? ? ? ? ? ? ? ? console.log(str1);
二衰腌、顯示轉(zhuǎn)換/強(qiáng)制轉(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);? ?
? ? ? ? ? ? ? console.log(typeof str);
? ? ? 3.parseFloat()? 將一個數(shù)據(jù)轉(zhuǎn)換為小數(shù)
? ? ? ? ? ? ? var? num=.5;
? ? ? ? ? ? ? var str=parseFloat(num);
? ? ? ? ? ? ? console.log(typeof str);
? ? ? ? ? ? ? console.log(typeof str);
? ? ? ? 4.Number? 將一個數(shù)據(jù)轉(zhuǎn)換為number類型
? ? ? ? ? ? ? var str="35.5你好";
? ? ? ? ? ? ? var str1=Number(str);
? ? ? ? ? ? ? console.log(str);
三、運(yùn)算符和表達(dá)式
? ? ? ? 1.算數(shù)運(yùn)算符
? ? ? ? ? + , - , * , / ,
? ? ? ? %:模,計算兩個相除的數(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á)式 稱之為 關(guān)系表達(dá)式鸠补,關(guān)系表達(dá)式的值為boolean類型
? ? ? ? ? ? ==萝风,!= : 只判斷數(shù)值是否相等
? ? ? ? ? ? ===? :全等? ? 類型相同 數(shù)值相同
? ? ? ? ? !==:不全等
? ? ? 3、邏輯運(yùn)算符
? ? ? 1紫岩、作用
? ? ? ? ? ? 判斷多條件 以及 條件取反時使用
? ? ? 2规惰、語法
? ? ? ? ? 1、邏輯? ? 非
? ? ? ? ? ? 對現(xiàn)有條件 取反
? ? ? ? ? 語法:!
? ? ? ? ? ? 2泉蝌、邏輯? ? 與
? ? ? ? ? ? 有兩個條件歇万,兩條件同時為真時,表達(dá)式才為真揩晴。
? ? ? ? ? 語法:&&
? ? ? 3、邏輯? ? 或
? ? ? ? ? 有兩個條件堕花,只要有一個為真文狱,表達(dá)式就為真
? ? ? ? ? 語法:||
? ? ? 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缘挽、語法:?
? ? ? 表達(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("不及格");
? ? ? }
一:運(yùn)算符和表達(dá)式
? ? ? ? 一、流程控制語句
? ? ? ? 1.
? ? ? ? if(條件){
? ? ? ? ? ? 要執(zhí)行的語句
? ? ? ? ? }
? ? ? ? 2.
? ? ? ? ? if(條件){
? ? 條件為true時執(zhí)行的語句
? ? ? ? ? }else{
? ? 條件不為true時執(zhí)行的語句
? ? ? ? ? }
? ? ? ? ? 3.多重條件語句
? ? ? ? ? if(條件){
? ? ? ? ? }else if(){
? ? ? ? ? ? }
? ? ? ? ? 4.switch .....case
? ? ? ? ? ? switch(變量){
? ? ? ? ? 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;
? ? ? ? ? }