1.表達式與語句
- 表達式:是一組代碼的集合,返回一個值
1 + 3
- 語句:是為了完成某種任務而進行的操作。以分號結尾如输,一個分號就表示一個語句結束。多個語句可以寫在一行內央勒。
var a = 1 + 3;
var a = 1 + 3 ; var b = 'abc';
;;; //表示3個空語句
區(qū)別:
語句一般情況下不需要返回值不见;
表達式一定會返回一個值
2.標識符
- 標識符對大小寫敏感,
a
和A
是兩個不同的標識符 - 第一個字符崔步,可以是任意Unicode字母(包括英文字母和其他語言的字母)稳吮,以及美元符號($)和下劃線(_)
- 二個字符及后面的字符,除了Unicode字母井濒、美元符號和下劃線灶似,還可以用數字0-9
注釋:一種是單行注釋,用//起頭瑞你;另一種是多行注釋酪惭,放在/* 和 */之間。
3.if else 語句
- 語法
if (表達式) {
語句
} else if (表達式) {
語句
} else {
語句
}
- {}在語句只有一句的時候可以省略
Test1:以下表達式輸出什么: a等于2
a = 1
if (a === 2)
console.log('a')
console.log('a等于2')
因為省略了
{}
者甲,if表達式相當于if (a === 2){console.log('a')}
,代碼順序執(zhí)行春感,最后輸出a等于2
a = 1
if (a === 2){
console.log('a')
}
console.log('a等于2')
Test2:以下表達式輸出什么: a等于2
a = 1
if (a === 2)
console.log('a');console.log('a等于2')
Test3:以下表達式輸出什么: undefined
a = 1
if (a === 2)
console.log('a'),console.log('a等于2')
switch 語句
//語法
switch(expresstion){
case value1:
statement;
break;
case value2:
statement;
break;
case value3:
statement;
break;
default:
statement;
}
如果表達式等于case的值,對應的語句就會執(zhí)行
break關鍵字會使程序跳出switch語句,不添加break程序會多次判斷case虏缸,進入相應流程;
沒有一個值符合case鲫懒,流程進入default子句,很多規(guī)范也強調必須添加default部分
問號冒號表達式
表達式1?表達式2:表達式3
function max(a,b){
if(a>b) return a;
else return b;
}
function max(a,b){
return a>b?a:b
}
&& 且運算符
expr1 && expr2
若 expr1 可轉換為 true刽辙,則返回 expr2窥岩;否則,返回 expr1扫倡。
并不會取true/false
if(window.a){
console.log('a存在')
}
window.a && console.log('a存在')
|| 或運算符
expr1 || expr2
若 expr1 可轉換為 true谦秧,則返回 expr1竟纳;否則,返回 expr2疚鲤。
c = c || 100
if (c){
c = c
}else{
c = 100
}
4.while循環(huán)
while語句屬于前測試循環(huán)語句锥累,也就是在循環(huán)體內的代碼被執(zhí)行之前,就會對條件判斷集歇,不符合的話就不會執(zhí)行
while(表達式){
語句;
}
var i = 0
while(i<10){
console.log(i)
i += 1
}
//輸出 0 1 2 3 4 5 6 7 8 9
Test:輸出結果是否為死循環(huán): 是桶略,因為0.1為浮點數
var a = 0.1
while(a !== 1){
console.log(a)
a = a + 0.1
}
5.for循環(huán)
for語句也是前測試循環(huán)語句,但具備在執(zhí)行循環(huán)代碼以前初始化變量和定義循環(huán)后要執(zhí)行代碼的能力
先執(zhí)行語句1诲宇,然后判斷表達式2际歼;如果為真,執(zhí)行循環(huán)體姑蓝,再執(zhí)行語句3鹅心;如果為假,直接退出循環(huán)
for(語句1; 表達式2; 語句3){
循環(huán)體
}
for(var i = 10; i > 0; i--){
console.log(i);
}
// 輸出 10 9 8 7 6 5 4 3 2 1
Test:輸出結果為纺荧?十個0
for(var i = 10; i > 0; i--){
setTimeout(()=>{
console.log(i);
},0)
}
先執(zhí)行for循環(huán)旭愧,i值為0,過一陣之后執(zhí)行setTimeout函數輸出i宙暇;因為for循環(huán)10次输枯,setTimeout函數執(zhí)行10次,所以輸出10個0
6.break占贫、continue
- break 用于強制退出循環(huán)體桃熄,執(zhí)行循環(huán)后面的語句
for (var i = 0; i < 5; i++) {
console.log(i);
if (i === 3)
break;
}
// 輸出 0 1 2 3
- continue 用于退出本次循環(huán),執(zhí)行下次循環(huán)
var i = 0;
while (i < 10){
i++;
if (i % 2 === 0) continue; //i為偶數型奥,跳出本次循環(huán)
console.log( i);
}
//輸出 1 3 5 7 9
Test:輸出結果瞳收? 0 1 2 3 4
for (var i = 0; i < 5; i++) {
for( var j = 10; j < 15; j++ ){
if( i ===2 ) break
}
console.log(i)
}
因為存在多重循環(huán),break語句和continue語句都只針對最內層循環(huán)
7.label
為代碼添加標簽桩引,方便后續(xù)使用,語法:
labelname: statement;
foo: {
console.log(1);
break foo; //跳出代碼塊
console.log('本行不會輸出');
}
console.log(2);
// 輸出1 2
foo: {1};
console.log(2);
// 輸出 2
{ //代碼塊
foo: {1};
console.log(2);
}
// 輸出 2
{ //代碼塊
foo: {1};
}
最后表示 代碼塊中有foo標簽缎讼,標簽內容為
1