1. 程式人生 > >表達式計算-----------eval()運算符

表達式計算-----------eval()運算符

def 表達式 ffffff tro 編譯 沒有 表達 別名 發現

1.java的eval()方法(或稱之為運算符)可以將字符串解析成可以運行的javaScript代碼,例如

技術分享

技術分享

eval()只有一個參數。如果傳入的參數不是一個字符串,那麽它會直接返回這個參數。如果傳入的參數是一個字符串,那麽它會把字符串當成js代碼來進行編譯,如果編譯失敗他會拋出一個

語法錯誤異常,如果編譯成功,則返回最後執行的結果,如果編譯的代碼沒有返回值,那麽返回undefined.

關於eval最重要的一點是:它查找變量的值和定義新變量和函數的操作和局部作用域中的代碼完全一樣,例如

技術分享

如果調用eval("a=555"),那麽會改變局部變量a的值

技術分享

如果調用eval("var v=999");那麽他會聲明一個新的局部變量

技術分享

技術分享

2.eval()使用別名調用

關於這個問題,首先看下面這個例子

技術分享

我們發現我們的運行結果是undefined,為什麽呢,因為javaScript規定,無論在什麽位置,使用別名來引用eval,那麽它的作用域都將是全局,例子

技術分享

技術分享

表達式計算-----------eval()運算符