3 回答

TA貢獻1802條經(jīng)驗 獲得超5個贊
嚴(yán)格來說,它們將產(chǎn)生相同的結(jié)果,但是如果將前一種情況用作其他條件的條件,則會得到不同的結(jié)果。這是因為在的情況下x && doSomething()
,doSomething()
將返回一個值以表示其成功。

TA貢獻1829條經(jīng)驗 獲得超4個贊
不,它們不相同。雖然if是語句,但AND運算符是表達式。
這意味著您可以將其結(jié)果用于其他表達式,而if語句則不能:
var result = x && doSomething();
但是,在您的情況下,兩者具有相同的效果。使用更具可讀性并更好地表示程序結(jié)構(gòu)的代碼;我建議使用if語句。

TA貢獻1811條經(jīng)驗 獲得超5個贊
簡短答案:不可以。
長答案:
@Steve的A x && doSomething()是一個表達式,
而是if(x) doSomething();一個聲明,
正如@Daniel Li和@Bergi所建議的那樣,請考慮:
計算一個表達式(應(yīng)該在這里返回一個值)。
聲明了一條語句(不應(yīng)該在這里返回值,請考慮副作用)。
為什么令人困惑?
JS允許我們寫 ( thatExpression );
JS允許我們寫 thatExpression;
兩者都假設(shè)某種doNothingWithValueOf陳述。
如何選擇?
您是否使用:
doSomething() 作為一個
表達,認(rèn)為IsMyObjectWhatever()或者MyObjectComputedValue(),
或聲明,認(rèn)為 ModifyMyObject()
然后:您是否將其x && doSomething()用作表達式?
您最終會想到thisStatement( thatExpression );無處不在的想法,請考慮:
() 表達,
; 聲明。
那我為什么要選擇呢?
顯而易見的是“它有效”。不代表“正確”。
如果不太明顯,那么何時會有所作為:
只是認(rèn)為()(()())()(); 可以是 對的,(;) 是 錯的。
檢查@wwaawaw Javascript:語句和表達式之間的區(qū)別?
或Expressions-vs-statements由Axel Rauschmayer發(fā)布
添加回答
舉報