var connections = {key: 1234}
var thisconnection = connections["key"] || {status:"new"};`
在上面的代碼中,變量thisconnection進行邏輯運算'||'
變量thisconnection的值和HOW是什麼?
當我簡單地鍵入在控制檯下面的代碼,thisconnection
需要在任何情況下connections["key"]
的值。
var connections = {key: 1234}
var thisconnection = connections["key"] || {status:"new"};`
在上面的代碼中,變量thisconnection進行邏輯運算'||'
變量thisconnection的值和HOW是什麼?
當我簡單地鍵入在控制檯下面的代碼,thisconnection
需要在任何情況下connections["key"]
的值。
在下面的語句
var thisconnection = connections["key"] || {status:"new"};
你的意思是,如果connection["key"]
存在分配給connection["key"]
thisconnection
,其他明智分配{status:new}
到thisconnection
。
這是同下面的代碼
if(connections["key"]){
thisconnection = connection["key"]
}
else{
thisconnection = {status:new}
}
如果connections["key"]
是零,然後{status:"new"}
將是可變
值你爲什麼不試試呢?
var connections = {key: 1234};
var thisconnection = connections["key"] || {status:"new"};
console.log(thisconnection); // returns 1234
說明:
如果connections.key
返回0,NaN時,假,未定義, 「」(空字符串),或評估爲假任何值,但將繼續評估下一個||
表達。
然而,如果表達式求值truthy,整個語句完成了評估。這被稱爲short-circuiting:
作爲邏輯表達式進行求值從左到右,它們是爲可能的「短路」的評價使用以下規則測試短路評估爲錯誤。
由於1234
是truthy值,評價停止,值1234被分配。
首先,它會檢查connections["key"]
,
如果不爲空,則thisconnection
與價值包含的connections["key"]
值。否則thisconnection
將包含值{status:"new"}
。
在JavaScript中,在變量賦值使用時||
和&&
運營商擁有特定的行爲。如果你有這樣的事情:
var theResult = a || b || c || d;
然後,變量theResult
將不會像我們預期的其他語言的布爾值。
If a
is truhty,then theResult = a
。否則,如果b
是truhty,那麼theResult = b
。等等......如果所有變量都是虛假的,那麼theResult = d
因爲d
是或條件中的最後一個語句。
規則如下:
的theResult
值將是變量的值a || b || c || d
其掙脫鎖鏈
所以,既然我們只有OR條件,那麼第一個值決心到true
將打破連鎖。我的意思是,如果a === true
,那麼它不需要評估其餘的條件,因爲true || false || whatEver || weDontCare
將永遠是true
。如果沒有變量打破鏈條,則最後一個變量被分配到theResult
。
我不明白這個問題。由於連接[「key」]有價值,因此條件的結果將是其值。如果不是,它最終會成爲具有「狀態」鍵/值的匿名對象。 –
下面的答案給了你一個解釋,但是這行代碼本身有點奇怪,因爲你將該值設置爲整數或對象。通常情況下,您會希望兩個選項都是相同的類型,以便通過代碼進一步持續使用它們。 – Paddy