1.變量
JavaScript 的變量名區(qū)分大小寫腿箩,A和a是兩個不同的變量苦囱。如果只是聲明變量而沒有賦值焰情,則該變量的值是undefined闹司。undefined是一個特殊的值嗤朴,表示“無定義”配椭。
var a;
a // undefined
如果一個變量沒有聲明就直接使用,JavaScript 會報錯播赁,告訴你變量未定義颂郎。
x
// ReferenceError: x is not defined
1.1變量的提升
javaScript 引擎的工作方式是,先解析代碼容为,獲取所有被聲明的變量乓序,然后再一行一行地運行。這造成的結果坎背,就是所有的變量的聲明語句替劈,都會被提升到代碼的頭部,這就叫做變量提升(hoisting)
console.log(a);
var a = 1;
上面的語法不會報錯,因為存在變量提升,它的實際運行會是這樣
var a;
console.log(a);
a = 1;//undefined
輸出的結果是undefined
2.標識符(identifier)
規(guī)則
- 區(qū)分大小寫得滤,A與a是兩個不同的標識符陨献。
- 標識符首字符可以是Unicode 字母,下劃線(_),美元符($),不能是數字懂更。
- 標識符中其它字符可以是Unicode 字母,下劃線(_)眨业、美元符($)急膀、數字組成的。
var 1// Unexpected number,第一個字符不能是數字
var ** //Unexpected token ** 標志符中不能有星號
var -d //Unexpected token - 標志符中不能有減號或連字符
var u+1 =3 //Unexpected token + 標志符中不能有加號
JavaScript 有一些保留字龄捡,不能用作標識符:arguments卓嫂、break、case聘殖、catch晨雳、class、const奸腺、continue餐禁、debugger、default突照、delete帮非、do、else绷旗、enum喜鼓、eval、export衔肢、extends庄岖、false、finally角骤、for隅忿、function、if邦尊、implements背桐、import、in蝉揍、instanceof链峭、interface、let又沾、new弊仪、null、package杖刷、private励饵、protected、public滑燃、return役听、static、super、switch典予、this甜滨、throw、true熙参、try艳吠、typeof、var孽椰、void、while凛篙、with黍匾、yield。
3.注釋
// 單行注釋
<!-- 單行注釋
--> 單行注釋(只有在行首,其他地方被當作運算符)
/*
多行
注釋
*/
4.區(qū)塊
對于var命令來說呛梆,JavaScript 的區(qū)塊不構成單獨的作用域(scope)
{
var a = 1;
}
a // 1
上面代碼中,對于區(qū)塊內部的a變量,在區(qū)塊外部依然可以訪問,在JavaScript中,區(qū)塊一般用來構成復雜的語法
5.條件語句
5.1 if 和 if ... else語句
if
語法結構
if(條件) {//條件是一個bool值,true 或 false
語句
}
var i = 2;
if (i == 2) {
console.log('i的值為2'); //i的值為2
}
賦值表達式(=)
相等運算符(==)
嚴格相等運算符(===)
if ... else
語法結構
if (條件) {
// 滿足條件時锐涯,執(zhí)行的語句
} else {
// 不滿足條件時,執(zhí)行的語句
}
5.2 switch語句
語法結構
switch (a) {
case "a":
// 語句a...
break;
case "b":
//語句b ...
break;
default:
// 語句default...
}
- 當符合
case
中的a
條件時,case
中的語句a會執(zhí)行,break
關鍵字會中斷switch
語句執(zhí)行下一個case
語句,如果沒有break
,下一個case
語句分執(zhí)行 -
case
語句中可以用表達式,但是和switch
后面的表達式是用===
匹配,不會進行強類型轉換
5.3 三元運算符
(條件) ? 表達式1 : 表達式2
當條件為true時,執(zhí)行表達式1 否則執(zhí)行表達式2
var i = 2;
var a;
i == 2 ? a = i : a = 3
console.log(a)//a = 2
6.循環(huán)語句
for
循環(huán)
for (初始化表達式; 條件; 遞增或遞減表達式) {
語句
}
var a = 3;
for (var i = 0; i < a; i++) {
console.log(i);
}
// 0 1 2
var b = 3;
for (var i = b; i > 0; i--) {
console.log(i);
}
//3 2 1
while
循環(huán)
while(條件) {
語句
};
do...while
循環(huán)
do {
語句
}while(條件);
eg:
var i = 5;
do {
console.log('run');
i--;
console.log(i);
}while(i > 1);
//run 4 3 2 1
不管條件是否為真填物,do...while
循環(huán)至少運行一次
break和continue
break
語句用于跳出代碼塊或循環(huán)
for(i = 0; i < 5; i ++) {
if(i == 3) {
console.log('break');
break;
}
console.log(i);
}
輸出:0 1 2 break
continue
語句用于跳出當次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)(如果有)
for(i = 0; i < 5; i ++) {
if(i == 3) {
console.log('continue');
continue;
}
console.log(i);
}
輸出:0 1 2 continue 4
7.標簽(label)
相當于定位符纹腌,用于跳轉到程序的任意位置,標簽通常與break
語句和continue
語句配合使用,跳出特定的循環(huán)
label:
語句
test:
for(i = 0; i < 5; i ++) {
for(j = 0; j < 5; j ++) {
if(j == 3) {
break test;
}
console.log('i = ' + i + `, j = ` + j);
}
}
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2