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>
輸出結果:
【相關推薦:javascript影片教學、web前端】
以上是eval是es6中的方法嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!