最近開始學習JavaScript,整理了一些相關的基礎知識
JS注釋方式:
// 單行注釋(Ctrl+/ )
/*
段落注釋(Ctrl+shift+/ )
*/
【JavaScript基礎】
JavaScript:
基於瀏覽器 、基於(面向)對象、事件驅動、腳本語言
JavaScript的作用:
表單驗證,減輕服務的壓力,添加頁面動畫效果,動態更改頁面內容,Ajax網絡請求(Ajax:可以實現頁面局部刷新)
JavaScript組成部分;ECMAScript(5.1/6)、DOM、BOM
ECMAScript腳本程序語言:
語法標准:語法;變量和數據類型;運算符;邏輯控制語句;關鍵字、保留字;對象
DOM文檔對象模型
BOM瀏覽器對象模型
JavaScript的基本結構:
<script type="text/javascript">
JS語句;
</script>
變量的聲明和變量:
先聲明變量再賦值:
var width; width=5;
var——用於聲明變量的關鍵字;width——變量名
...
同時聲明變量和賦值
不聲明直接賦值
【使用JS的三種方式】
1、HTML標簽中內嵌JS;
<button onclick="alert('小樣你真點啊!')">有本事點我呀!!!</button>
2、HTML頁面中直接使用JS:
<script type="text/javascript">
JS語句;
</script>
3、引用外部JS文件:
<script language="JScript" src="JS文件路徑"></script>
【注意事項】
1)頁面中JS代碼與引用JS代碼,可以嵌入到HTML頁面的任意位置。但是,位置不同會影響到JS代碼的執行順序;
例如:<script>在body前面,會在頁面加載之前執行JS代碼;
2)頁面中JS代碼,使用type="text/javascript"
引用外部的JS文件,使用language="JScript"
3)引用外部JS文件的<script></script>標簽,必須成對出現,且標簽內部不能有任何代碼!
【JS中的變量】
1、JS中變量聲明的寫法:
var width = 10;//使用var聲明的變量,只在當前函數作用域有效
width1 = 11;//不適用var,直接賦值生成的變量,默認為全局變量,整個JS文件有效
var a,b,c=1;//同一聲明語句同時聲明多個變量,變量之間用英文逗號分隔,但是,賦值需要單獨賦值,例如上式中,只有c賦值為1,a b為undefined(未定義)。
【聲明變量注意事項】
1)JS中所有變量類型聲明,均使用var關鍵字。變量的具體數據類型,取決於給變量賦值的執行。2)同一變量可在多次不同賦值時,修改變量的數據類型
var width = 10;//width 為整型變量
width="hahaha";//width 被改為字符串類型
3)變量可以使用var聲明,也可以省略var,[區別]不使用var,默認為全局變量
4)同一變量名,可以多次用var聲明,但是並沒有任何含義,也不會報錯,第二次之后的聲明,只會被理解為賦值。
2、變量的命名規范
1)變量名,只能有字母,數字,下划線,$組成
2)開頭不能是數字
3)變量區分大小寫,大寫字母與小寫字母為不同變量
3、變量命名名要符合駝峰法則:
變量開頭為小寫,之后每個單詞首字母大寫;
XiaoXiZhenMeng √
xiao_xi_zhen_meng √
xiaoxizhenmeng ×
4、JS中的變量的數據類型
Undefined:未定義,用var聲明的變量,沒有進行初始化賦值。var a;
Null:表示為空的引用。var a = null;(其中一種情況)eg:空對象,空數組。。。
boolean:真假,可選值true/false
Number:數值類型。可以是小數,也可以是正數。
String:字符串類型。用""和''包裹的內容,稱為字符串。
Object(復雜數據類型):后續講解,函數、數組等。。。
5、常用的數值函數:
1)isNaN:用於判斷一個變量或常量是否為NaN(非數值)
使用isNaN判斷時,會嘗試使用Number()函數進行轉換,如果能轉換為數字,則不是非數值,結果為false
"111" 純數字字符串,false "" 空字符串,false "la" 包含其他字符,true
true/false 布爾類型,false
2)Number():將其他類型轉換為數值類型
[字符串類型轉數值]
>>字符串為純數值字符串,會轉為對應的數字"111"->111
>>字符串為空字符串時,會轉換為0 ""->0
>>字符串包含其他非數字字符時,不能轉換 "111a"->NaN
[布爾Boolean類型轉數值]
true->1 false->0
[null/Undefined轉數值]
null->0 Undefined->NaN
[Object類型轉數值]
(以后再了解哦~)先調用ValueOf方法,確定函數是否有返回值,再根據上述各種情況判斷。
3)parseInt:將字符串轉成數值
>>>空字符串,不能轉。結果為NaN
>>>純數值字符串,能轉。"123"->"123" "123.5"->123(小數轉化時,會直接抹去小數點,不進行四舍五入)
>>>包含其他字符的字符串,會截取第一個非數值字符串前的數值部分。"123a456"->123 "a123b345"->NaN
>>>parseInt只能轉String類型,Boolean/null/Undefined 均為NaN
4)parseFloat:將字符串轉為數值
>>>使用方式同parseInt,但是,當轉化小數字符串時,保留小數點;轉化整數字符串時,保留整數;
"123.5"->123.5 "123.0"->123
5)typeOf:用來檢測變量類型
未定義—>Undefined 字符串->string true/false->boolean 數值->Number
對象/null->Object 函數->function
【JS中的輸出語句】
document.write();
輸出語句,將write的()中的內容打印在瀏覽器屏幕上
使用時注意:除變量/常量以外的任何內容,打印時必須放在""中,變量/常量必須放到""外
打印的內容同時有多部分組成,之間用“+”鏈接
例如:document.write("輸出互換前手中的紙牌:"+left+"<br />");
alert();彈窗警告
1、【算術運算】
+ 加、- 減、* 乘、 / 除、 % 取余、++ 自增、-- 自減
+:有兩種作用,鏈接字符串/加法運算;當+兩邊均為數字時,進行加法運算;
當加號兩邊有任意一邊為字符串時,進行字符串鏈接,鏈接之后的結果認為字符串
++:自增運算符,將變量在原來基礎上+1;
--:自減運算符,將變量在原來基礎上-1;
【n++ 與 ++n 的異同】
n++:先使用n的值進行計算,然后再把n+1;
++n: 先使用n的值+1,然后再用n+1以后的值,去運算;
相同點:不論是n++還是++n,在執行完代碼以后,均會把n+1;
eg: var a = 3;
var b,c;
b = a++ +2; //a=3 b=5 c=4
c = ++a +2; //a=4 b=5 c=7
document.write("a:"+a);
document.write("b:"+b);
document.write("c:"+c);
2、賦值運算
= 賦值、 += -= *= /= %=
+=:a += 5;相當於a = a + 5;但是,前者的執行效率要比后者快,
3、關系運算
== 等於、=== 嚴格等於、 != 不等於 、>、<、>=、<=
===:嚴格等於;類型不同,返回false;類型相同,再進行下一步判斷
==:等於;類型相同,同===;類型不同,嘗試將等式兩邊轉為數字,再判斷;
特例:null==Undefined √ ; null===Undefined ×
4、條件運算符(多目運算)
a>b?true:false
有兩個關鍵符號:?和:
當?前面的部分運算結果為true時,執行:前面的代碼;
當?前面的部分運算結果為false時,執行:后面的代碼;
>>>多目運算符可以多層嵌套:
例如:var jieguo =
5、邏輯運算符
&& 與、|| 或、! 非
6、運算符的優先級
()
! ++ --
% / *
+ -
> < >= <=
== !=
&&
||
各種賦值= =+ *= /= %=
【if-else結構】
1、結構寫法:
if(判斷條件){
//條件為ture時執行
}else{
//條件為false時執行
}
2、if()中的表達式,運算之后的結果應該為:
1)Boolean:true 真 ; false 假
2)string:非空字符串為真 ;空字符串為假
3)Number:0為假 ;一切非0均為真
4)Null/NaN/Undefined:全為假
5)Object:全為真
3、else{}結構,可以根據具體情況省略;
【多重if、階梯if】
1、結構寫法:
if(條件一){
//條件一成立
}else if(條件二){
//條件一不成立&&條件二成立
//else if 部分,可以有多個
}else{
//條件一不成立&&條件二不成立
}
2、多重if結構中,各個判斷條件是互斥的,只能選擇其中一個
3.if/else的大括號可以省略,但不提倡,如果省略,
則if/else包含的代碼只包括其后最近的一行(分號結束);
else結構永遠屬於其前方最近的一個if結構。
【嵌套if結構】
1、結構寫法:
if(條件一){
//條件一成立
if(條件二){
//條件二成立
}else{
//條件為false時執行
}
}else{
//條件為false時執行
}
2、if結構可以多重嵌套,但是原則上不超過三層
【Switch-Case結構】
1、結構寫法:
switch(表達式){
case 常量表達式1:
語句一;
break;
case 敞亮表達式2:
語句二;
break;
。。。
default:
語句N
}
2、注意事項:
1)switch()中的表達式,以及每個case后面的表達式,可以為任何JS支持的 數據類型;(對象和數組不同);
2)case后面的所有常量表達式,必須各不相同,否則只會執行第一個;
3)case后的常量可以是任何數據類型;同一個switch結構的不同case,可以是多種不同的數據類型;
4)switch在進行判斷時,采用的是全等判斷===
5)break的作用:執行完case代碼后,跳出當前switch結構;
缺少break的后果:從正確的case項開始,依次執行所有的case和defalse
6)switch結構在判斷時,只會判斷一次正確答案,當遇到正確的case項后,將會不再判斷后續項目,依次往下執行;
7)switch結構的執行速率要快於多重if結構。在多路分支時,優先考慮switch結構。
【循環結構的步驟】
1)聲明循環變量
2)判斷循環條件
3)執行循環體(while的{}中所有代碼)操作
4)更新循環變量
然后,循環執行2)3)4)
【JS中循環條件支持的數據類型】
1)Boolean:true 真 ; false 假
2)string:非空字符串為真 ;空字符串為假
3)Number:0為假 ;一切非0均為真
4)Null/NaN/Undefined:全為假
5)Object:全為真
while循環特點:先判斷,在執行
do-while循環特點:先執行,在判斷;即使初始條件不成立,do-while循環也至少執行一次
【For循環】
1、for循環有三個表達式,分別為:①定義循環變量 ② 判斷循環條件 ③更新循環變量(三個表達式之間,用;分隔。)
for循環三個表達式可以省略,兩個;缺一不可
2、for循環特點:先判斷,再執行;
3、for循環三個表達式,均可以有多部分組成,之間用逗號分隔,但是第二部分判斷條件
需要用&&鏈接,最終結果需要為真/假
【循環控制語句】
1、break:終止本層循環,繼續執行循環后面的語句;
當循環有多層時,break只會跳過一層循環;
2、continue:跳過本次循環,繼續執行下一次循環;
對於for,continue執行后,繼續執行循環變量更新語句n++
對於while,do-while,continue執行后,繼續執行循環條件,
判斷;所以使用這兩個循環時必須注意continue一定要在n++之后,否則會造成死循環。
