簡體   English   中英

JavaScript中的Lambda函數語法,不帶花括號

[英]Lambda function syntax in JavaScript without curly braces

我剛剛發現Firefox接受了以下(很棒的)語法

f = function(x) x+1;
f(17) //gives 18

有誰知道這到底是怎么回事? 這有什么標准嗎? 其他瀏覽器也接受嗎? (我測試了IE 8,它給了我語法錯誤)

這不是標准的一部分。 該文檔位於https://developer.mozilla.org/en/New_in_JavaScript_1.8#Expression_closures_%28Merge_into_own_page.2fsection%29

有關於在這些行中添加一些語法或甚至更短的標准的討論。 請參閱http://wiki.ecmascript.org/doku.php?id=strawman:shorter_function_syntax

大括號被省略,就像其他控制結構一樣( iffor )。 它是那些標准語法的一部分,也許不適用於函數。 我可以檢查一下這個規格。

慣例是如果省略大括號,則塊是以下單個語句( 只有一個語句)。

例如

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;

我個人避免使用無支撐結構,因為當代碼被不知道如何工作的人修改時,它會導致可維護性問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM