1、 表達式和語句
表達式一般都有值,語句可能有值也可能沒有,語句一般會改變環境(聲明、賦值),但這些都不是絕對的。
1 + 2 表達式值爲 3
console.log 表達式的值爲函數本身
add(1, 2) 表達式的值爲函數的返回值
console.log(3) 表達式的值爲 undefined,打印3
var a = 1 是一個語句,值爲 undefined
2、標識符的規則
第一個字符可以是 Unicode字母、$、下劃線(_)或中文
後面的字符,除了上述字符,還可以有數字
變量名是標識符
JavaScript 大小寫敏感
3、註釋
好的註釋:告訴你爲什麼要這樣寫
爛的註釋:告訴你寫了什麼
4、 if else 語句
// 打印結果是什麼?
var a = 1;
if(a === 2)
console.log(a);
console.log('a等於2');
// 結果打印 a等於2,因爲 if 語句省略花括號時,只有一句
// 打印結果是什麼?
var a = 1;
if(a === 2)
console.log(a), console.log('a等於2');
// 結果什麼也不打印,因爲逗號表示語句未結束
// 前端常用 && 和 || 代替 if 語句
a = a || 100;
// 等同於以下語句
if(a) {
a = a;
} else {
a = 100; // 保底值
}
window.f1 && console.log('不存在');
false && 3 || true && 4;
/* 結果爲4。
(1) 因爲與、或、非運算優先級 ! > && >|| ,所以先執行兩邊的 && 運算,最後執行 || 運算。
(2) && 運算,左邊表達式判斷是 false,則返回左邊表達式的值,否則返回右邊表達式的值。
false && 3 結果爲 false。true && 4結果爲4。
(3) || 運算,左邊表達式判斷是 true,則返回左邊表達式的值,否則返回右邊表達式的值。*/
5.while / for 語句
for 循環:可以在很明確循環次數上去做內容
while 循環:不明確循環次數,也可以做。場景:如猜數字
do…while:至少會執行一次
// 是否會死循環?
var a = 0.1;
while(a != 1) {
console.log(a);
a = a + 0.1;
}
// 會死循環。因爲浮點數相加過程中逐漸不精確,無法到達1
// 執行完語句後 i 爲多少?
for(var i = 0; i < 5; i++) {
console.log(i);
}
// i = 5
// 打印結果是什麼?
for(var i = 0; i < 5; i++) {
setTimeout(() => {
console.log(i);
}, 0)
}
// 打印 5 次 5。
// for 循環先執行,每次執行把定時器放到事件隊列裏。
// 主線程 for 循環執行完了,纔會執行事件隊列裏的。
// 希望 5次按順序打出數字,將 var 改爲 let 即可。
// 幾秒打出幾?
for(var i = 0; i < 3; i++) {
setTimeout(() => {
console.log(i);
}, 1000*i)
}
// 0 秒輸出一次 3,1 秒輸出一次3, 2 秒輸出一次 3。
6、break / continue
break 和 continue 跳出最接近的循環,對循環外的循環沒有影響。
7、 label 語句
語法如下
foo: {
console.log(1);
break foo;
console.log('本行不會輸出');
}
console.log(2);
// 打印結果 1 和 2
// 以下是什麼?
{
foo: 1;
}
// 是 label,值爲1
// 以下是什麼?
var a = {
foo: 1
}
// 是對象