JS中的eval(..) 和with —— 你不知道的JavaScript

JavaScript 中有兩個機制可以“欺騙”詞法作用域:eval(..) 和with。前者可以對一段包

含一個或多個聲明的“代碼”字符串進行演算,并借此來修改已經存在的詞法作用域(在

運行時)。后者本質上是通過將一個對象的引用當作作用域來處理,將對象的屬性當作作

用域中的標識符來處理,從而創(chuàng)建了一個新的詞法作用域(同樣是在運行時)。

這兩個機制的副作用是引擎無法在編譯時對作用域查找進行優(yōu)化,因為引擎只能謹慎地認

為這樣的優(yōu)化是無效的。使用這其中任何一個機制都將導致代碼運行變慢。不要使用它們。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容