2016-03-13 29 views
1

爲什麼在使用短路評估定義變量時必須使用var關鍵字?使用短路評估來定義變量

這工作...

var sum=sum||5; 
console.log(sum); //shows 5; 

這不工作...

sum=sum||5; 
console.log(sum); //error sum is not defined; 

不應該第二個例子只是使之和=== 5,但在全球範圍內,而不是本地的?

回答

1

當你做var sum=sum||5;什麼內部發生的情況是這樣的:

  • 變量sum定義,它的創建,
  • 變量sum被分配了一個undefined
  • 變量sum被分配sum || 5的結果,這就像是說undefined || 5,這是5

當你簡單地做sum = sum||5上面的第一步和第二步都沒有發生,所以在第三步中,你將的所有5的值不存在短路,這就是爲什麼你會得到這個錯誤。

爲了更好地理解,請執行以下操作:打開瀏覽器的控制檯,並簡單地編寫sum。您將收到錯誤信息,因爲sum不存在。現在,做sum = ''。這裏發生的是變量sum被定義/創建,就好像你已經完成var sum,它現在存在,並且它被賦值爲''

上面,你應該瞭解的本質,是有之間的差異短路與價值的價值undefined5短路的東西,不具有存在的價值5