2016-11-18 33 views
0

我想寫這個代碼更短:是否有像條件運算符那樣縮短語句的語法?

var fn = function (a) { 
    if (a) { 
     somefn.call(null, a); 
    } 
}; 

使用箭頭聲明,這將是:

var fn = (a) => { if (a) somefn.call(null, a); }; 

我想短代碼,如果使用條件運算符:

var fn = (a) => a ? somefn.call(null, a) : null;// null is dummy code 

這並不美麗。有沒有這樣的語法?:

var fn = (a) => a ? somefn.call(null, a); 

謝謝。

+0

你從短代碼中看到了什麼好處? –

+1

'var f = a => a && s.call(null,a);'這就像你會得到的那麼小,但是你還需要使'somefn' - >'s'和'fn'現在成爲'f' ...如果'f'在全局範圍內,則可以通過刪除'var' ...來保存4個額外的字節...所以現在它是'f = a => a && s.call(null,a);'。 ..如果你在函數中創建了一個叫做'''的函數,它調用'',並且有'var n = null;' - 那麼這個函數可以更短''f = a => a && s.c(n,a); ' - 我認爲這樣做很短 –

+0

@JaromandaX:也許這是代碼高爾夫? – DrakaSAN

回答

1

你可以使用logical AND &&,它檢查a並調用函數,如果a是真的。

var fn = a => a && somefn.call(null, a); 
0

您的原始代碼足夠短,「美麗」,並希望做你想做的。

你可以寫這樣的東西。但這不是更好的代碼,更難以理解......

var fn = a ? function(a) { somefn.call(null, a) ; } : function() { }; 
+0

這並不短。 – Nick