表達式和語句
阿新 • • 發佈:2017-11-14
3.2 ont bre err defined es6 efault stat 作用域
貌似很簡單的概念,其實還是很值得深挖的。
1.基本概念
表達式是一種有值的語法結構,它能產生一個值,我們能拿這個值參與各種運算,比如var a;console.log(a=10);//輸出10 這裏a=10是一個賦值表達式,將10賦值給變量a,這麽一來a的值為10,同時該賦值表達式返回a的值10作為函數console.log()的參數 語句是一種控制程序運行的語法結構,在宏觀上調控程序。2.表達式類型
2.1 變量常量表達式
a 3.42.2 算術表達式
a+b i++ ++i2.3 賦值表達式
a = 3; b = a+42.4 邏輯表達式
a && b 1 || 32.5 關系表達式
a < 4 b == 52.6 逗號表達式
a=3,b
3.語句類型
3.1 表達式語句
表達式加上分號就變成了表達式語句,比如a = 3; some();3;3.2 語句塊
用一個花括號將各種代碼包含起來,這種結構稱為語句塊。在ES6中出現了塊作用域,用法是聲明變量時,不是用var關鍵字,而是用let關鍵字 案例一:{ var a = 10; let b = 20; } console.log(a);//10 console.log(b);//ReferenceError用let聲明的變量b作用域僅限在{}範圍內,在{}外訪問不到變量b 案例二:break可以用於任何標記語句
foo: { console.log(案例三:continue只能用於循環標記語句‘face‘);//face break foo; console.log(‘this will not be executed‘);//不會輸出 }
console.log(‘swap‘);//swap
var i, j; loop1: for (i = 0; i < 3; i++) { //The first for statement is labeled "loop1" loop2:兩段程序的區別就是continue處。第一段程序,continue後面沒有標記,表示返回到當前循環,也就是轉到loop2處繼續執行,而此時i的值是1,繼續執行的話,i的值仍然為1,j的值變為2。也就是continue的運行不會影響到i的值,它的作用僅僅是忽略j=1.第二段程序continue loop1表示程序的執行方向跳到loop1的位置,而位於loop1處的代碼是外層循環,這麽一來continue loop1表示,停止當前內層循環的運行,跳到外層循環處,這麽一來,原本i=1,j=1,直接跳到外層循環,忽略了j=2的處理。在外層循環處,經過i++運算,i變為了2,然後繼續內層循環的執行。 案例四:錯誤案例for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2" if (i == 1 && j == 1) { continue ; } /*** i = 0, j = 0 i = 0, j = 1 i = 0, j = 2 i = 1, j = 0 i = 1, j = 2 i = 2, j = 0 i = 2, j = 1 i = 2, j = 2 ***/ console.log("i = " + i + ", j = " + j); } } var i, j; loop1: for (i = 0; i < 3; i++) { //The first for statement is labeled "loop1" loop2: for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2" if (i == 1 && j == 1) { continue loop1; } /*** i = 0, j = 0 i = 0, j = 1 i = 0, j = 2 i = 1, j = 0 i = 2, j = 0 i = 2, j = 1 i = 2, j = 2 ***/ console.log("i = " + i + ", j = " + j); } }
pmx:{ var a = 10; console.log(a); } { console.log("hello"); break pmx; console.log("hi"); }瀏覽器報語法錯誤:SyntaxError:Undefined label ‘pmx‘ 因為break能識別的標識語句是自身所在的語句塊或者父語句塊,顯然標識符"pmx"所標識的語句和break所在的語句一點關系都沒有,自然break不知道要跳轉到哪裏了。
3.3 空語句
只有一個分號的語句,它表示什麽也不做。var i=0;for(;i<10;i++){...}3.4 控制語句
3.4.1 循環控制語句
while(true){ console.log("while 語句"); break; } do{ console.log(‘do while語句‘) break; }while(true); for(;;){ console.log("for 語句"); break; }
3.4.2 條件語句
var a = 10; if(a < 30){ console.log("if 語句") } if(a < 20){ console.log("if else語句"); }else{ } if(a < 5){ }else if(a < 6){ }else if(a < 11){ console.log("if else if else if 。。。語句"); } switch(a){ case 1: break; case 2: break; case 10: console.log("switch 語句"); break; default: }
3.4.3 特殊控制語句
return; return 10; break; continue;
表達式和語句