我剛剛發現以下(真棒)語法由火狐lambda函數語法,而不花括號
f = function(x) x+1;
f(17) //gives 18
接受有誰知道這到底是怎麼回事?這是在任何標準?其他瀏覽器是否也接受它? (我測試了IE 8,它給了我語法錯誤)
我剛剛發現以下(真棒)語法由火狐lambda函數語法,而不花括號
f = function(x) x+1;
f(17) //gives 18
接受有誰知道這到底是怎麼回事?這是在任何標準?其他瀏覽器是否也接受它? (我測試了IE 8,它給了我語法錯誤)
大括號被省略,就像你可以爲其他控制結構使用塊(if
,for
)一樣。它是這些標準語法的一部分,可能不適用於函數。我可以檢查規格。
的慣例是,如果省略牙套,該塊是以下單個語句(僅一個語句)。
例如
if(x) g=1;
相當於
if(x){ g=1; }
但是請注意,
if(x) g=1; f=2;
並不等同於
if(x){ g=1; f=2; }
它實際上是
if(x){ g=1; } f=2;
我避免braceless結構,個人,因爲當代碼是由人誰不知道這是如何工作修改它會導致可維護性的問題。
表達式關閉文檔鏈接已更改爲新的[one](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Expression_Closures)。 – 2017-03-27 11:01:54