您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“eval是不是es6中的方法”,內容詳細,步驟清晰,細節處理妥當,希望這篇“eval是不是es6中的方法”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
eval不是es6中的方法;該方法是JavaScript中的,用于計算JavaScript字符串,并把字符串當做腳本代碼來執行,如果傳入的字符串是表達式則返回表達式求值結果,否則返回undefined,語法為“eval(string)”。
本教程操作環境:windows10系統、ECMAScript 6.0版本、Dell G3電腦。
eval() 函數計算 JavaScript 字符串,并把它作為腳本代碼來執行。
如果參數是一個表達式,eval() 函數將執行表達式。如果參數是Javascript語句,eval()將執行 Javascript 語句。
eval() 函數會將傳入的字符串當做 JavaScript 代碼進行執行,如果傳入的字符串是表達式則返回表達式求值結果,否則返回 undefined 。
描述
如果傳入 eval() 的參數不是字符串,則會直接返回該參數。
非嚴格模式下直接調用 eval() 時,里面使用 var 聲明的變量和使用 function 聲明的函數會修改當前詞法作用域,里面使用 let 和 const 聲明的變量不會修改當前詞法作用域,但是會在當前創建新的詞法作用域。
非嚴格模式下間接引用 eval() 時,會直接運行在全局環境中,里面使用 var 聲明的變量和使用 function 聲明的函數會修改全局詞法作用域,里面使用 let 和 const 聲明的變量不會修改全局詞法作用域,但是會在全局環境創建新的詞法作用域。
嚴格模式下直接調用的 eval() 時,會在當前創建一個新的獨立的詞法作用域。
嚴格模式下間接引用的 eval() 時(只有在 eval() 內的字符串里面開啟嚴格模式時,字符串才會以嚴格模式執行),會在全局環境創建一個新的獨立的詞法作用域。
使用 window.eval() 等同于間接引用 eval() 。
eval() 中執行的代碼只能調用 JS 解釋器(Interpreter)來解釋執行,無法被即時編譯器(JIT Compiler)優化, eval() 中的執行的代碼可能會導致 JS 引擎在已經生成的機器代碼中進行變量查找和賦值,帶來性能問題。
eval() 使用不當可能會導致里面執行的字符串容易遭受惡意修改,帶來安全問題(比如 XSS 攻擊)。
使用 eval() 會干擾代碼壓縮工具的行為。代碼壓縮工具一般會將局部變量名重命名為更短的變量名(如 a 和 b 等),以便減小代碼體積。當使用了 eval() 時,由于外部的局部變量可能會被 eval() 訪問到,代碼壓縮工具便不會對可能會被 eval() 訪問到的局部變量名進行壓縮,會降低代碼壓縮率。
語法
eval(string)
示例如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>123</title> </head> <body> <script> eval("x=10;y=20;document.write(x*y)"); document.write("<br>" + eval("2+2")); document.write("<br>" + eval(x+17)); </script> </body> </html>
輸出結果:
讀到這里,這篇“eval是不是es6中的方法”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。