1. 程式人生 > >你不知道的JavaScript——do表示式和eval()

你不知道的JavaScript——do表示式和eval()

ES7 規範有一項“do 表示式”(do expression)提案,但是具體的用例和語法還沒有廣泛使用,所以這裡只作提及,類似下面這樣:

var a, b;

a = do {

if (true) {

b = 4 + 38;

}

};

a; // 42

上例中,do { .. } 表示式執行一個程式碼塊(包含一個或多個語句),並且返回其中最後一 個語句的結果值,然後賦值給變數 a。 其目的是將語句當作表示式來處理(語句中可以包含其他語句),從而不需要將語句封裝 為函式再呼叫 return 來返回值。

eval()這種不安全的做法(因為eval函式可以執行解析一切JavaScript語句,會造成一系列不可估計的錯誤和損失):

var a, b;

a = eval( "if (true) { b = 4 + 38; }" );

a; // 42

也是可以的