學習js筆記(第3章-語句和嚴格模式)

語句

塊語句 block

用一對花括號定義安全

js沒有塊級做用域函數

聲明語句

常見錯誤
code

try catch語句

try後面必須接一個cathfinally語句

發生嵌套時的執行順序:
紅框內部沒有catch,因此會跳到最近的catch去處理,即外部的catch

異常已經在內部處理,就再也不拋到外部了

cath再拋異常,內部異常沒有處理,拋給外面,外面處理以前,要先執行裏面的finally語句
對象

for in語句

坑比較多
blog

with語句

不建議使用
ip

嚴格模式

嚴格模式是一種特殊的執行模式,它修復了部分語言上的不足(禁用with),向上兼容(有利於編寫高質量,健壯性的代碼),提供更強的錯誤檢查,並加強安全性(在eval中使用了獨立的做用域).作用域

不容許用with語句

不容許未聲明的變量被賦值

arguments變爲參數的靜態副本

  1. 非嚴格模式下,agm[0]和參數a相互綁定,可是當不傳參數時,a的值爲undefined,此時若修改了agm[0]的值,a仍然是undefined!!!
  2. 嚴格模式下,agm和形參無任何關係
  3. 嚴格模式下,若是傳入的參數是對象,因爲js的call by share,修改對象屬性時,會相互影響

delete參數、函數名報語法錯

dele不可配置的屬性報錯

對象字面量重複屬性名報語法錯誤

禁止八進制字面量

eval,arguments變爲關鍵字,不能做爲變量,函數名

eval變成了獨立做用域

其他狀況

靜態綁定

Javascript語言的一個特色,就是容許"動態綁定",即某些屬性和方法到底屬於哪個對象,不是在編譯時肯定的,而是在運行時(runtime)肯定的。
嚴格模式對動態綁定作了一些限制。某些狀況下,只容許靜態綁定。也就是說,屬性和方法到底歸屬哪一個對象,在編譯階段就肯定。這樣作有利於編譯效率的提升,也使得代碼更容易閱讀,更少出現意外。好比禁止使用with語句,創設eval做用域。it

相關文章
相關標籤/搜索