[英]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
大括號被省略,就像其他控制結構一樣( 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;
我個人避免使用無支撐結構,因為當代碼被不知道如何工作的人修改時,它會導致可維護性問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.