JavaScript 中有兩個機制可以“欺騙”詞法作用域:eval(..) 和with财搁。前者可以對一段包
含一個或多個聲明的“代碼”字符串進行演算事示,并借此來修改已經(jīng)存在的詞法作用域(在
運行時)。后者本質(zhì)上是通過將一個對象的引用當作作用域來處理憨募,將對象的屬性當作作
用域中的標識符來處理捍岳,從而創(chuàng)建了一個新的詞法作用域(同樣是在運行時)紧帕。
這兩個機制的副作用是引擎無法在編譯時對作用域查找進行優(yōu)化,因為引擎只能謹慎地認
為這樣的優(yōu)化是無效的愉烙。使用這其中任何一個機制都將導(dǎo)致代碼運行變慢讨盒。不要使用它們。