即流控制語句:一個或多個關鍵字完成給定任務
if語句
if(condition){ dosomething();}else { dosomething()}condition可以使任何表達式,如果不是布爾值,會自動調用Boolean()轉換為布爾值 始終使用代碼塊(花括號)
do-while語句 后測試循環語句,至少執行一次
while語句 前測試循環語句,先對出口條件求值
for語句
for(初始化表達式;控制表達式;循環后表達式){}上面三個表達式都是可選的 前測試循環語句,但是具有執行循環之前初始化變量(var i = 0)和定義循環后要執行的代碼能力(i++);終止條件:i<10; while循環做不到的for循環同樣做不到;for循環變量初始化可以在外部執行,與在for循環中聲明的效果是一樣的(變量提升,由于ECMAScript中不存在塊級作用域,循環內部定義的變量也可以在外部訪問到)
for-in語句 枚舉對象的屬性,一種精準的迭代語句
for(PRoperty in expression){ statement}沒有順序,因此屬性名的順序是不可預測的;如果要迭代對象的變量值為null或undefined,for-in語句會拋出錯誤,ECMAScript5更正了這一行為,不在拋出錯誤,而只是不執行循環體。為了保證兼容性,建議使用for-in循環之前,先檢測確認該對象的值不是null或undefinedlabel語句
start:for(){ }將來有break或continue語句引用
break和continue語句 循環中精確地控制代碼的執行。break立即退出循環,而continue語句雖然立即退出當次循環,從循環頂部繼續執行; 而break outemost;帶了一個參數,要返回到的標簽:用于多個循環嵌套的情況,能一次退出多個循環,否則,只能退出一個循環;
with語句 簡化多次編寫同一個對象的工作,但是后面的高版本不支持了
with(location)statement在with語句的代碼塊內部,每個變量被認為是一個局部變量,而如果在局部變量中找不到該變量的定義,就會查詢location對象中是否有同名屬性,如果發現了同名屬性,則以location對象屬性的值作為變量的值; 嚴格模式下不允許使用with語句,開發大型應用時,不建議使用with
switch 語句 每個case后面都添加一個break語句,避免同時執行多個case代碼的情況;假如確實需要混合集中情況,不要忘了在代碼中添加注釋,說明有意省略了break關鍵字 switch 可以使用任何數據類型,字符串、對象都沒有問題。switch語句在比較值時使用的是全等操作符,不會發生類型轉換。
ECMAScript中的函數使用function關鍵字來聲明
function functionName (arg0,arg1,...,argN){ statements}函數調用 :函數名+圓括號和參數(多個用逗號隔開); 可以通過return語句返回要返回的值;return語句后的任何代碼都不會執行 函數要么始終返回一個值,要么永遠都不要返回值; eval arguments 不要作為函數和參數名,不要出現同名參數;
理解參數 ECMAScript 中的參數在內部使用數組表示的,不關心數組中包含哪些參數,函數內部可以通過arguments對象來訪問函數數組,從而獲得傳遞給函數的每個參數 arguments只是與數組類似,并不是Array的實例,可以用方括號訪問它的每個元素,arguments[0],length屬性可以用來確定傳遞進來多少參數 arguments,它的值永遠與對應命名參數的值保持同步;arguments和命名參數的內存空間是獨立的,但是他們的值會同步,但是這種影響是單向的:修改命名參數不會改變arguments中的對應值,但是修改arguments中的值會改變命名參數的值(函數內部的值變化);沒有傳遞值的命名參數將自動服務undefined(定義了變量但是沒有初始化);嚴格模式對arguments進行了限制:arguments的值設置不會改變命名參數,并且重寫arguments的值會導致語法錯誤 ECMAScript中的所有參數傳遞的都是值,不可能通過引用傳遞參數。
沒有重載 同名函數會覆蓋前面的
未指定返回值的函數返回的是一個特殊undefined值 由于不存在函數簽名的特性,ECMAScript函數不能重載
新聞熱點
疑難解答