var temp = temp || {};
在上面的語法臨時創建。我很好奇,這是如何工作的。我認爲如果臨時存在,表達式的右側應該返回true,但它正在創建一個對象。這個怎麼用。任何解釋都會有幫助。如何,如果它不是已經存在,否則會參考這是已經創建的變量這項工作在JavaScript
var temp = temp || {};
在上面的語法臨時創建。我很好奇,這是如何工作的。我認爲如果臨時存在,表達式的右側應該返回true,但它正在創建一個對象。這個怎麼用。任何解釋都會有幫助。如何,如果它不是已經存在,否則會參考這是已經創建的變量這項工作在JavaScript
由於您聲明temp並在表達式的另一端使用它,因此它的值未定義,因此,例如,如果您說var temp = temp;
,您將看到temp
未定義。
您正在使用表達式||
(OR),因此它是一個布爾表達式。由於temp
之前未聲明,因此它是undefined
此面將是「假」,而返回是另一面。
其simplyfied版本var temp = (temp == undefined || temp == false) ? {} : temp;
a || b
使用邏輯OR運算符,其評估a
,並且如果a
是真實的,則其評估爲a
。否則,返回b
。
如果temp
尚未宣佈,var temp
有「已」由它在temp = ""
使用的時候宣佈它(變量聲明爲功能全在JavaScript)。如果它是已經申報,沒問題;重新聲明在JavaScript中有效,並且不會影響變量的現有值。
「Truthy」在這裏的意思是「不要錯」。事情在JavaScript是falsy:
false
0
(和-0
爲此事)NaN
""
null
undefined
如果使用這個在JavaScript中存在的變量,你可以檢查:
if (typeof temp === 'undefined') {
// temp is undefined
//create variable temp
// your code here
}
else{
//temp exists
//your code here
}
見_Logical或''||上operator_ [** ** MDN(HTTPS ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators)。基本上,在'expr1 ||中expr2',如果'expr1'是真的,它會返回,否則返回'expr2'。 –