當前位置:編程學習大全網 - 編程語言 - Web前端面試指導(三十七):eval是做什麽的

Web前端面試指導(三十七):eval是做什麽的

這題目的看起來比較簡單,但是總感覺有沒有那麽簡單,確實是這樣子。所以回答這個題目要從不同的角度去回答。首先回答清楚它是幹什麽的有什麽用,然後在談談它對作用域的影響,然後就是執行效率的問題,最後談談eval()的其它作用。這樣答下來自己都覺得滿意了吧!

eval()的作用

把字符串參數解析成JS代碼並運行,並返回執行的結果;

例如:

[javascript]?view plain?copy

1、eval("2+3");//執行加運算,並返回運算值。?

2、eval("varage=10");//聲明壹個age變量?

eval的作用域

[javascript]?view plain?copy

1、functiona(){?

2、 eval("var?x=1");?//等效於?var?x=1;?

3、 console.log(x);?//輸出1?

4、}?

5、a();?

6、console.log(x);//錯誤?x沒有定義?

說明作用域在它所有的範圍內容有效

示例2:

[javascript]?view plain?copy

1、functiona(){?

2、 window.eval("var?x=1");?//?等效於window.x=1;定義了全局變量?

3、 console.log(x);?//輸出1?

4、}?

5、a();?

6、console.log(x);//輸出1?

這段代碼悲劇了?在IE8及IE8壹下的版本就不支持了。?

解決方法:

[javascript]?view plain?copy

1、functiona(){?

2、 if(window.execScript){?//?支持IE8及以下的版本?

3、 ?window.execScript("var?x=1");?

4、 }?

5、 else{?//常用的瀏覽器都支持?

6、 ?window.eval("var?x=1");?

7、 }?

8、 console.log(x);?

9、}?

10、a();?

11、console.log(x);?

註意事項

應該避免使用eval,不安全,非常耗性能(2次,壹次解析成js語句,壹次執行)。

其它作用

由JSON字符串轉換為JSON對象的時候可以用eval,例如:

[javascript]?view plain?copy

1、varjson="{name:'Mr.CAO',age:30}";?

2、varjsonObj=eval("("+json+")");?

3、console.log(jsonObj);?

  • 上一篇:在flash中怎樣設置透視效果?
  • 下一篇:自動化專業院校排名與考研難度排名
  • copyright 2024編程學習大全網