回答
如果x
是不確定的(或空,或任何其他false
值),它成爲一個空對象。
分配x
到一個新的空對象,如果它是null
(未定義,false)還是保持它現有的值,如果不null
。
||
是合乎邏輯的OR
。
表達
var x = x OR {};
應該變得更明顯然後。
如果x
有falsy值(如null
,undefined
,0
,""
),我們分配x
空對象{}
,否則只要保持當前值。這樣做的長版會是什麼樣子
var x = x ? x : {};
優秀的答案。我是一個C程序員,這沒有任何意義。 – jakoh 2010-08-25 06:13:20
如果這對你沒有任何意義,那麼你也可以注意'!! value',它返回一個代表'value'真值的布爾值,有時候非常方便。 – 2010-08-25 06:19:31
您的長版本不正確:請考慮x先前已定義並設置爲「null」的情況。 'var x = x || {};'將x重新定義爲一個對象,而'var x =(typeof x!=='undefined')? x:{};'不會。前面的段落是正確的。 – 2010-08-25 15:48:37
除非x被定義或賦值將採取空對象爲默認值..
就是
for example
x = 10
var x = x || {};
輸出必須
10
如果未指定x值。輸出值必須是
undefined
如果定義了var x,那麼它將是該定義的值。否則這將是空的對象像[object Object]
例如,在下面的代碼塊,x是10
:
var x = 10;
x = x || {}
然而,如果:
var x = x || {};
然後x
將[object Object]
不應該寫「var x = x || {};」本身。
這與「var x = {}」不相同的唯一情況;「是當x在先前在相同範圍內初始化時。這是不道德的。注:
function() {
x = {foo:"bar"};
var x = x || {};
}
是一樣的,只不過不是更混亂,
function() {
var x = {foo:"bar"};
x = x || {};
}
在兩種情況下是有沒有在全球範圍內的符號「X」的值的任何引用。
這種表達是合法的財產懶初始化成語的困惑變種:
function(foo) {
foo.x = foo.x || {};
foo.x.y = "something";
}
- 1. 這是什麼意思「var x = function function_name(){}」?
- 2. JavaScript中的'var $ x'和'var x'有什麼區別?
- 3. CRYSTAL REPORT什麼是x:= x;?
- 4. 是什麼X ++和++ X
- 5. 爲什麼var x = 5工作而不是var n = a?
- 6. 什麼是{$ x}?
- 7. 爲什麼x ++ - + - ++ x合法但是x +++ - +++ x不是?
- 8. 什麼是list.count(x => x * x> 1)在做什麼?
- 9. 會是什麼.SelectMany(X => X)是SQL
- 10. 什麼是「x && foo()」?
- 11. 爲什麼存在x ++和++ x,x + = 2但不是x = + 2?
- 12. 爲什麼x ** 3比x * x * x慢?
- 13. 什麼是qsort void * x和*(int *)x?
- 14. 「declare + x」是什麼意思vs「declare -x」?
- 15. (ctypes.c_int * len(x))(* x)是做什麼的?
- 16. 什麼時候是(true == x)=== !! x false?
- 17. (x:_)和[x:_]是什麼意思?
- 18. (x << 13)^ x是什麼意思?
- 19. 什麼是+ X在表達式$ {GC_TUNE + X}
- 20. x = x ++;的影響是什麼?
- 21. x的值是什麼? X = A ++ + ++ A + A ++
- 22. x = x ++ + ++ x的評估順序是什麼?是?
- 23. var x = new Array();
- 24. X對CSS來說是什麼GWT對Javascript來說是什麼;什麼是X?
- 25. C# - 最後一個while循環和'var x'是做什麼的?
- 26. 什麼是var toUser = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == toUserId);意思?
- 27. 「自大狂」中的「var x =」theBomb「是什麼;」do?
- 28. 爲什麼x <= x false?
- 29. 爲什麼x^0 = x?
- 30. Bazaar + X = SDLC。什麼是X?問題跟蹤器選擇什麼?
這個問題是舊的一個,另一個是重複的。 – 2016-11-10 16:44:57
JavaScript中的邏輯表達式從左到右進行評估,並使用以下規則對它們進行可能的「短路」評估:false &&(anything)short-circuit評估爲false。真|| (任何事物)都被短路評估爲真。在上面的例子中,如果x爲真,則x變爲分配的值。如果x爲假或未定義,則第二個操作數變爲{}的分配。 – tony 2017-08-06 20:46:08