面試題(6)-eval()大揭秘
大師兄
讀完需要
3
分鐘
速讀僅需1分鐘
最近看了阿里的面試,感受就是「革命尚未成功,同志還需努力」。
考察知識點不僅細而且很基礎,一句話就是:認真對待技術,對待基礎。不要為了一味追求技術棧,越跑越遠。其實回過頭你也不過是在原地打轉。
知其然知其所以然,欲速則不達。javascript為主線,某一個框架為輔。慢慢打磨足以。
這題目的看起來比較簡單,但是總感覺有沒有那麼簡單,確實是這樣子。所以回答這個題目要從不同的角度去回答。首先回答清楚它是幹什麼的有什麼用,然後在談談它對作用域的影響,然後就是執行效率的問題,最後談談eval()的其它作用。這樣答下來自己都覺得滿意了吧!
eval()的作用
一句話就是把字元串參數解析成js代碼並運行,並返回執行的結果;
eval("2+3");//執行加運算,並返回運算值。
eval("varage=10");//聲明一個age變數
eval的作用域
說明作用域在它所有的範圍內容有效
示例2:
functiona(){
window.eval("var x=1");// 等效於window.x=1;定義了全局變數
console.log(x);//輸出1
}
a();
console.log(x);//輸出1
這段代碼悲劇了?在IE8及IE8一下的版本就不支持了。
解決方法:
functiona(){
if(window.execScript){// 支持IE8及以下的版本
window.execScript("var x=1");
}
else{//常用的瀏覽器都支持
window.eval("var x=1");
}
console.log(x);
}
a();
console.log(x);
注意事項:
應該避免使用eval,不安全,非常耗性能(2次,一次解析成js語句,一次執行)。
其它作用:
由JSON字元串轉換為JSON對象的時候可以用eval,例如:
varjson="";
varjsonObj=eval("("+json+")");
console.log(jsonObj);
我是見過有人這麼做過。有人還用eval()進行字元串的拼接。但是平時我想你們不會用到,或者說盡量少用。
下期預告
對this對象的理解
TAG:web前端開發大師兄 |
※Swift面試題(1)
※2018年最常見的Python面試題&答案(中篇)
※2018年最常見的Python面試題&答案(上篇)
※68道Spring面試題和答案
※30道Spring面試題和答案
※Hibernate面試題大全
※關於 ArrayList 的 5 道面試題
※Python 經典面試題 21 道
※Python經典面試題21道
※在 GitHub 上收穫 6519顆Star 的 Python 面試題資源,到底有多牛?
※Tomcat+Servlet面試題都在這裡
※前端面試題:JS中的let和var的區別
※2019前端框架面試題 —— Round one
※Python 爬蟲面試題 170 道
※「Spring 全家桶」70 道高頻面試題
※2019 Android 高級面試題總結
※Android面試題推薦
※Linux大牛分享的7道經典面試題和秒收 offer 的技巧
※300道Python面試題,備戰春招!
※最常見的 35個Python 面試題及答案