【使用JS的三種方式】
一、在html標籤中,直接使用JS(並不提倡使用):
栗子:<button onclick="alert('我好啊')">點本寶寶</button>
不符合內容與行爲分離的要求!
二、在html頁面中使用<script></script>包裹JS代碼:
栗子:<script type="text/javascript">
JS代碼;
</script>
script標籤能夠放到頁面的任何位置。
三、引入外部的JS文件
<script language="JavaScript" src="JS/01.js" ></script>
【注意事項】
一、<script></script>能夠嵌入頁面的任意位置。可是,位置的不一樣會致使JS代碼的執行順序不一樣;
好比:<script></script>放到<body></body>前面,則JS代碼會在頁面加載以前執行。
二、引入外部的JS,<script></script>必須是成對出現的標籤。並且,標籤中不能有任何JS代碼。
JS中多行註釋。ctrl+shift+/
JS中單行註釋。ctrl+/javascript
【JS中變量】
一、JS中變量申明的寫法:
var num=1;//使用var申明的變量,屬於局部變量,只在當前做用域有效;
num=1;//不用var申明的變量,默認爲全局變量,在整個JS文件中有效。
var x=1,y=2,z=1;//使用一行語句申明多個變量,下式中,x,y屬於以申明,可是未賦值狀態,結果爲undefined;
var x,y,z=1;
alert(x);
alert(y);
alert(z);html
【申明變量注意事項】
一、JS中全部變量的申明,均使用var關鍵字,變量具體是什麼數據類型,取決於給變量賦值的類型。
二、同一個變量,能夠在屢次不一樣賦值時,修改變量的數據類型;
var a=1;//從初始申明,a屬於整形
a="chuanchuan";//重複賦值時,整數型的a被修改成字符串型類型;
三、變量可使用var申明,也能夠不實用var申明。
【區別】使用var申明爲局部變量,不使用var申明爲全局變量;
四、只用var申明,可是不賦值,結果爲undefined;
例如:var a;//a爲undefined。
可是,若是不申明也不賦值a,直接使用會報錯。
五、同一變量名能夠屢次使用,可是後面的var並無用,第二次使用var申明時,只會被理解爲普通的賦值操做。
【變量名的命名要求】
一、只能有字母,下劃線,數字組成;
二、開頭不能是數字;
三、變量名區分大小寫,大寫字母與小寫字母爲不一樣變量;java
【變量名的命名規範】
一、要符合小駝峯法則:首字母小寫以後每一個單詞的首字母大寫。
例如:myNameIsChuanChuan
二、或者使用匈牙利名命法
my_name_is_chuan_chuan
三、mynameischuanchuan 能用,可是不規範
【JS數據類型】
一、Undefined:未定義。已經使用var神明的變量,可是沒有賦值的狀況。如:var a;
二、Null:空引用。
三、Boolean:布爾類型。表示真假,只有兩個值,true和flase
四、Nnumber:數值類型,能夠是整數,也能夠是小數
五、String:字符串類型,用""或''包裹的內容,稱爲字符串
六、Object:對象類型,
【經常使用的數值函數】
一、isNaN():判斷一個變量或常量是否是NaN(not a number 非數值);
使用NaN()判斷時,會嘗試使用Number()函數進行轉換,若是最終結果可以轉換爲數字,則不是NaN,結果爲false。
二、Number()函數:將其餘類型的數據,嘗試轉爲數值型。
[字符串類型]
字符串爲純數值字符串,會轉爲對應數字;例如:"111"->111
字符串爲空字符串,會轉爲0;例如:""->0
字符串包含任何其餘字符串時,都不能轉;例如:"1a"->NaN
[boolean類型]
true->1 flase->0
【Null/Undefined】
Null->0 Undefined->NaN
parseInt():將字符串轉爲整數類型;
純數值字符串,能轉。
"12"->12; "12.9"->12(小數轉換時,直接抹掉小數點,不能進行四捨五入)
空字符串,不能轉。""->NaN
包含其餘字符串,會截取第一個非數值字符串前的數字部分
"123a456"->123; "a123b456"->NaN
parseInt()只能轉字符串。轉其餘類型,全是NaN。
【Number函數與ParseInt函數的區別】
一、Number函數能夠轉各類數據類型,ParseInt函數只能轉字符串
二、二者在轉字符串時,結果不徹底相同。(詳解見上面解釋)
parseFloat:將字符串轉爲數值型;
轉換規則與ParsenInt相同,只是若是有小數,則保留小數點;若是沒有小數,則依然是整數;
"12.5"->12.5; "12"->12
typeof:檢測變量的數據類型:
字符串->String 數值->Number 未定義->Undefined
true/false->Boolean 函數->function 對象/Null->object
【JS中經常使用的輸入輸出語句】
一、document.write();將括號中內容打印輸出到瀏覽器屏幕上;
使用時需注意:除變量,常量外全部內容,必須放到""中,變量和常量必須放到""外面;
若是同時又變量和字符串,必須用+連接
例如:document.write("左手中的紙牌:"+left+"<br/>");
二、alert();使用彈窗輸出;
彈窗警告,()中的內容與上述要求相同。
三、prompt();彈窗輸入
接受兩部分參數:
①輸入框上面的提示內容,可選;
②輸入框裏面的默認信息,可選;
當只寫一部分時,表示輸入的內容。點擊肯定按鈕,變量被賦值爲輸入內容;點擊取消按鈕,變量將被賦值爲null;
輸入內容時,默認接收的數據類型都是 字符串!
例如:var num1 = prompt("請輸入第一個數:");
var num2 = prompt("請輸入第二個數:");
var sum = parseFloat(num1)+parseFloat(num2);
alert("結果是:"+sum);瀏覽器
【算術運算】
+ 、-、*、 /、 %、++ 、--
+:有兩種做用,連接字符串/加法運算。當+兩邊全爲數字時,進行加法運算;當+兩邊任意一邊爲字符串時,
起連接字符串做用,連接做用,連接以後結果爲字符串。
除+外,其他符號運算時,會將左右變量用Number函數轉爲數字。
/:結果保留小數點。
++:自增運算符,將 變量 在原有基礎上+1。
--:自減運算符,將 變量 在原有基礎上-1。
【a++和++a異同】
一、相同點:不管a++仍是++a,運算完後,a的值均會+1;
二、不一樣點:a++,先用a的值去運算,再把a+1;
++a,再把a+1,再用a的值去運算;
【賦值運算】
= += -= *= /= %=
+=:a+=b;至關於a=a+b;可是前者運算效率比較快,推薦+=的寫法。
【關係運算】
==、 !=、>、<、>=、<=
關係運算符運算以後的結果,只能是Boolean類型;
判斷一個數字是否處於某個區間,必須用&&連接;
例如:a<10 && a>0
===:嚴格等於,要求不但類型相同,值也必須形同。
==:等於,類型相同與===效果同樣,類型不一樣時,會嘗試用Number將兩邊轉數字,而後再判斷。
可是,有個別特例,如:Null==false × Null==Undefined √ Null==Null ×
【條件運算符(多目運算)】
a>b?true:false
當?前面運算結果爲true時,執行:前面的代碼
當?後面運算結果爲true時,執行:後面的代碼
冒號兩邊爲數值,則整個式子可用於賦值。var a =1<2?1:2;
冒號兩邊爲數值,將直接執行代碼。1<2 ? alert(1):alert(2);
多目運算符能夠多層嵌套。var a =1<2?alert(1):(1>0?4:5);
【位運算符、 邏輯運算符】
&&、||、!
&& 兩邊都成立,結果爲true
|| 兩邊有任意一邊成立,結果爲true
&& ||同時存在時,&&的優先級比||高
【運算符的優先級】
一、()
二、! ++ -- 單目運算符
三、* / %
四、> < >= <=
五、== !=
六、&& 注意:&& ||同時存在時,&&的優先級比||高
七、||
八、= += -= *= /=函數
【if-else結構】
一、結構的寫法:
if(判斷條件){
條件爲true,執行if{}
}else{
條件爲false,執行if{}
}
二、注意事項:
else{}語句塊。能夠根據狀況進行省略。
if和else後面的{}能夠省略,可是省略{},if和else後面只能跟一條語句;(因此不建議省略{})
三、if的()中的判斷條件,支持的狀況:
Boolean:true爲真,false爲假
string:空字符串爲假,全部非空字符串爲真。
Number:0爲假。全部非0數字爲真。
Null/Undefined/NaN:全爲假。
Object:全爲真。
【多重if、階梯if結構】
一、結構寫法:
if(if條件一){
條件一成立,執行操做
}else if(條件二){
條件一不成立&&條件二成立,執行的操做
}else{
上條件都不成立,執行的操做
}
二、多重if結構中,各個判斷條件是互斥的,執行選擇其中一條路執行,
遇到正確選項並執行完之後,直接跳出結構,再也不判斷後續分支
【嵌套if結構】
一、結構寫法:
if(條件一){
條件成立
if(條件二){
條件一成立&&條件二成立
}else{
條件一成立&&條件二不成立
}
}else{
條件一不成立
}
二、在嵌套if結構中,若是省略{},則else結構永遠屬於離他最近的if;
三、嵌套結構能夠多層嵌套,可是通常不推薦超過三層
能用多重if結構通常不推薦使用多重if結構。
【switch多路分支結構】
【工做原理】首先設置表達式 n(一般是一個變量)。隨後表達式的值會與結構中的每一個 case 的值作比較。
若是存在匹配,則與該 case 關聯的代碼塊會被執行。請使用 break 來阻止代碼自動地向下一個 case 運行。
一、結構寫法:switch(表達式){
case (能夠是表達式):
執行代碼塊 1
break;
case 2:
執行代碼塊 2
break;
case 3:
執行代碼塊 3
break;
default:
break;
}
二、switch結構()中的表達式能夠是各類JS支持的數據類型;
三、switch結構在進行判斷時,使用==判斷;
四、case後面的表達式能夠是各類數據類型,能夠是表達式,可是值要求各不相同,不然也只會執行第一個case。
五、break跳出當前當前switch結構;缺乏break後果 從第一個正確的case項開始,執行後面的全部case和default;
緣由:switch結構進行判斷的時候,只會判斷一次正確答案。當遇到正確case以後,將不會再判斷後續的項目。
六、 switch執行效率要比多重if快。在多路分支中,推薦優先使用。htm