2016-04-06 71 views
0

好吧,我的問題很簡單: 在JavaScript/ES6當你有像ES6/JavaScript的 - 聲明不設/常變量

x = 5; 

console.log(x); // 5 

是解釋器自動加入

會發生什麼「讓「在運行時或爲什麼這個工作沒有錯誤?




編輯:嚴格模式 ES5的語法允許一些所謂的隱式全局變量,這已經有很多令人沮喪的編程錯誤的 源。簡而言之,如果您忘記用var聲明 變量,那麼JavaScript會高興地認爲您指的是全局變量 。如果沒有這樣的全局變量存在,它會創建一個!你可以想象這造成的 問題。

我明白了。感謝您的所有評論。我現在明白爲什麼會發生這種情況。謝謝!

+4

您已經創建了一個非嚴格的情況下隱式全局變量。 – Jackson

+1

如果你處於嚴格模式(我認爲你總是應該這樣做),它會拋出一個異常,而不是創建一個隱式的全局。此外,這不是ES6相關的,該行爲出現在ES6之前。 – ste2425

+0

因爲你沒有使用「嚴格使用」 – Oriol

回答

1

這裏沒有關於ES6的內容。您剛剛創建了一個全局變量,因爲您不在struct mode中。

順便說一下,babel默認會添加"use strict";.So您會收到一個錯誤babel

你可以在這裏嘗試一下:https://babeljs.io/repl/

1

在這種情況下,x變成全局變量。儘量避免這種情況,因爲全局變量在瀏覽器上可能很難。