這裏是代碼片段:這個JavaScript代碼片斷是什麼意思?
var prjId = navObj.itemId || navObj
這是否意味着prjId要麼等於navObj.itemId或navObj?那麼它是什麼意思,一個變量等於導航對象?
預先感謝您的答案!
這裏是代碼片段:這個JavaScript代碼片斷是什麼意思?
var prjId = navObj.itemId || navObj
這是否意味着prjId要麼等於navObj.itemId或navObj?那麼它是什麼意思,一個變量等於導航對象?
預先感謝您的答案!
如果設置爲false
或尚未在所有被定義,
prjId = navObj;
否則:
prjId = navObj.itemId;
。
否。||
運算符首先嚐試將轉換爲布爾值。
它會被轉換爲true
如果它已經是布爾值,true
,比0
或NaN
,非空字符串,或對象不是null
或undefined
以外的數字。這些被稱爲「truthy」的值。
它會被轉換爲false
如果它已經是布爾值false
,0
,NaN
,一個空字符串,null
或undefined
。這些被稱爲「falsey」值。
如果是 「truthy」,被分配到prjId
,否則navObj
被分配到prjId
。
進一步閱讀
我不是js專家,但那不是三元運算符。對我而言,這意味着如果其中一個條件成立,則prjId是真實的。不是嗎? – sam
不,據我瞭解,pswg的答案甚至沒有討論三元組,但是/ quality /(「truthy」與「falsey」)如果你願意運算'||'運算符兩邊的項目。如果左側的/ quality /爲真,則該變量設置爲左側的/ value /。如果不是,則使用右側。 –
@ user711061不完全。 JS中的'||'運算符是'?:'運算符的簡化版本。 'x || y'相當於'x? x:y'。結果是'x'或'y',而不是與它們相關的真值。 –
它設置prjId到的itemId對navObj的屬性(如果存在)(計算結果爲 'truthy'),如果它不存在(或者它評估爲'falsy'),prjId被設置爲navObj。
這等效於以下:
var prjId;
if(navObj.itemId)
prjId = navObj.itemId;
else
prjId = navObj;
它只是意味着如果邏輯或操作者(||)的左操作數是一個truthy值,則返回它否則返回右邊的操作數。
以下值始終falsy:
所以如果未評估爲上述任何內容,則將其分配給prjId
變量。例如,當我們在函數中有可選參數時,這被廣泛使用。這是一種爲可選參數指定默認值的方法。但當然,這不是它的唯一用途。
@ p.s.w.g有更正確的答案。如果navObj.itemId設置爲false,則會定義它,但會將prjId設置爲navObj。 – Jage
@Jage正確。沒有想到這一點。更新了答案以涵蓋該角落。 –