標籤:avs ++ cas 先後 script 方法 刪除 語句 span
語句就是javascript整句和命令。
運算式語句:
count++; alert(123); a = 100; .......
複合陳述式和空語句:
複合陳述式就是用逗號將多個語句連在一起形成複合陳述式。{x=1;y=2;alert(x);alert(y)}
ps:在javscript中沒有塊級範圍,只有函數範圍。
空語句包含0條語句,在部分時候也是有用的。
如for(var i = 0; i < 3 ; a[i++] =0);在這裡最後是一個分號,會執行for迴圈括弧裡面的語句。
聲明語句:
var 聲明一個變數。
假如var聲明在一個函數範圍內,那麼這個變數就是局部範圍。
ps:變數在函數範圍中有提前聲明的問題
window.onload = function(){ var b = "hello world"; function a(){ console.log(b); //變數提前聲明,undifined var b = "world hello"; //由於變數b在這裡定義了,所以導致變數提前聲明 console.log(b); } console.log(b); a();}
在上面的代碼中,函數a中先輸出b,但是b並沒有在之前聲明,但是在b之後有聲明b=“world hello",根據變數在函數範圍提前聲明的規則,那麼var = b會提前到函數塊的最頂上,所以第一個console.log(b)為undifined。
function 定義函數,必須使用花括弧,即使是一條語句,不可省略花括弧。
var a = function(){} 函數定義運算式方式
function a(){} 函式宣告方式
這兩種定義函數的方式是有區別:
第一種運算式方式在定義之後,var聲明的變數會提前到範圍的頂部,但是函數塊還在原來的地方,所以假如在函數塊之上調用函數就會報錯。
第二種函式宣告方式在聲明之後,變數和函數塊都會提前到範圍的頂部,可以做作用於上下文,所以在函數塊之上調用函數可以正常使用。
window.onload = function(){ alert(b()); //"world hello" alert(a()); //Uncaught TypeError: a is not a function //函數運算式中,只有變數聲明被提前了,變數初始化代碼依舊還在原來的位置 var a = function(){ return "hello world"; } //函式宣告語句,函數名稱和函數體都提前了,可以在聲明之前調用它 function b(){ return "world hello" } }
條件陳述式:
if else if switch
if(expression) statement if裡面的expression必須要寫,statement也是必須要寫的語句。
switch可以處理多條分支的情況
switch(expression){
case (expression) :
statement;
break;
...........
default :
statement;
break;
}
在switch中假如沒有break,那麼語句會一直執行直到switch最後一條語句。
在函數中可以中return代替break。
case的匹配是使用"==="進行比較的,所以匹配的時候不會進行類型的轉換。
switch的比較是從上到下的,default可以放到任何一個位置的。
迴圈
while do/while for for/in
do/while至少執行一次的迴圈,do是先執行語句,然後在通過while去進行判斷
for/in是用來遍曆一個對象的屬性的
for(variable in object),即使object是一個原始值,也會轉換成封裝對象來遍曆的。
但是遍曆也是有條件的,只能遍曆可枚舉的屬性,而javascript核心方法和對象屬性都是不可枚舉的,所以在遍曆的時候這些都沒有辦法遍曆出來,而自己定義的對象屬性和方法就可以遍曆出來。
如果for/in的迴圈體在還沒有遍曆到某屬性的時候就刪除了,那麼這個屬性就不會再擷取到;如果for/in迴圈體中增加了一個某屬性,那麼它也不會被擷取到。
屬性枚舉的順序,一般來說通過屬性定義的先後順序來枚舉的。
javascript學習筆記——語句