回答
表達式求myvar
如果myvar
是falsey,和foo()
如果myvar
是truthy。以下片段幾乎完全相同。
var x = (myvar && foo());
if(myvar){ var x = foo(); } else { var x = myvar; }
它是一個表達式,等同於「如果myVar不是falsey,運行函數foo()」。 如果使用像這樣:var x = (myVar && foo())
,結果將是:
如果myVar不是falsey,x將被設置爲foo()的輸出。如果myVar是falsey,那麼x將被設置爲myVar的值。
該表達式巧妙地使用了布爾表達式中的短路。只有當myVar的值爲true
時,foo()纔會執行。
if (myVar) {
foo();
}
更清晰。有些情況下這種代碼是有意義的,但是風格檢查器(如果你對這種事感興趣的話)會適合它。請參閱http://javascript.crockford.com/code.html。避免依賴分號插入和表達式語句是一種很好的做法。
編輯:請注意,在某些情況下,var x = a && b();
可能不是一個壞主意。然而,(a && b())
本身在幾個方面是錯誤的。 (分號插入,表達式語句,除了在語義隱蔽)
,把foo()函數纔會被調用,如果myVar的不falsey:這意味着它不能是假的, 「」,0,null或未定義。 (任何其他方面?)
這是比較典型的,看這樣一個例子:
window.console && console.log("some helpful debug info");
這被解釋如下...
「如果‘窗口’變量有一個成員叫'控制檯」 ......‘
(前綴是很重要的‘控制檯’與‘窗口’。因爲,如果控制檯是不確定的,你會得到一個JavaScript錯誤,而不是假的。)
’...在在'控制檯'對象上喚醒'log'方法。「
*「其他人?」*我認爲只是-0和NaN。 – 2010-01-11 22:55:54
@Jason:'0','NaN',一個零長度的字符串,undefined,null和false當然是虛假的...... – CMS 2010-01-11 23:00:09
啊,在我寫作時想到了NaN,但是忘了輸入。謝謝! – 2010-01-11 23:03:07
當& &被評估左手首先計算即myVar
,如果這是真,那麼只有右手側被評估即foo()
。這是因爲如果A爲假,那麼表達式A & & B將始終評估爲假。
上面的語句以下列方式通常用於:
var x = myVar && foo();
這也可以寫成:
if myVar is truee x = foo(), else x = false
- 1. $$('foo')在JavaScript源代碼中的含義是什麼?
- 2. '</'在JavaScript中的含義是什麼?
- 3. @const在JavaScript中的含義是什麼?
- 4. 「=>」在JavaScript中的含義是什麼?
- 5. $$在JavaScript中的含義是什麼?
- 6. @cc_on在JavaScript中的含義是什麼?
- 7. $(document.body)在javascript中的含義是什麼?
- 8. foo :: bar :: baz()在C++中的含義是什麼?
- 9. 爲什麼null == myVar而不是myVar == null?
- 10. 爲什麼myVar未定義?
- 11. javascript中的含義是什麼
- 12. 「foo不包含'bar'的定義...」是什麼意思?
- 13. 對象[foo]術語的含義是什麼?
- 14. 在JavaScript中顯式隱含的含義是什麼?
- 15. 什麼是AS3中的Foo?
- 16. 「$」的含義是什麼意思javascript
- 17. 在Javascript中,使用var foo = function foo(i){...}的動機或優勢是什麼?
- 18. Foo()和Foo()是什麼樣的數組?
- 19. Kornshell變量定義:什麼是?FOO?
- 20. 「===」在JavaScript/Jquery中暗含的是什麼?
- 21. _._在包裝中的含義是什麼?
- 22. 「++」在PHP中的含義是什麼?
- 23. tipbot在LKML中的含義是什麼?
- 24. information_schema.TABLES.DATA_FREE在MySQL中的含義是什麼?
- 25. * width:auto在CSS中的含義是什麼?
- 26. 什麼是::在簽名中的含義?
- 27. $$在shell中的含義是什麼?
- 28. *〜在glob中的含義是什麼?
- 29. uv.zw在HLSL中的含義是什麼?
- 30. 「LBS」在WAI中的含義是什麼?
如果MYVAR是truthy X沒有設置正確,其置爲foo()的值,無論可能如何。 – brad 2010-01-11 22:42:35
這不太對。如果myVar是0,那麼x被設置爲0,而不是false。 – 2010-01-11 22:45:30
你們都是對的。答覆修正。 – glomad 2010-01-11 23:05:53