2013-09-01 52 views
2
var temp = temp || {}; 

在上面的語法臨時創建。我很好奇,這是如何工作的。我認爲如果臨時存在,表達式的右側應該返回true,但它正在創建一個對象。這個怎麼用。任何解釋都會有幫助。如何,如果它不是已經存在,否則會參考這是已經創建的變量這項工作在JavaScript

+6

見_Logical或''||上operator_ [** ** MDN(HTTPS ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators)。基本上,在'expr1 ||中expr2',如果'expr1'是真的,它會返回,否則返回'expr2'。 –

回答

2

由於您聲明temp並在表達式的另一端使用它,因此它的值未定義,因此,例如,如果您說var temp = temp;,您將看到temp未定義。

您正在使用表達式||(OR),因此它是一個布爾表達式。由於temp之前未聲明,因此它是undefined此面將是「假」,而返回是另一面。

其simplyfied版本var temp = (temp == undefined || temp == false) ? {} : temp;

5

a || b使用邏輯OR運算符,其評估a,並且如果a是真實的,則其評估爲a。否則,返回b

如果temp尚未宣佈,var temp有「已」由它在temp = ""使用的時候宣佈它(變量聲明爲功能全在JavaScript)。如果它已經申報,沒問題;重新聲明在JavaScript中有效,並且不會影響變量的現有值。

「Truthy」在這裏的意思是「不要錯」。事情在JavaScript是falsy:

  • false
  • 0(和-0爲此事)
  • NaN
  • ""
  • null
  • undefined
0

如果使用這個在JavaScript中存在的變量,你可以檢查:

if (typeof temp === 'undefined') { 
// temp is undefined 
//create variable temp 
// your code here 
} 
else{ 
//temp exists 
//your code here 
} 
相關問題