我正在使用es2015的應用程序工作。理想情況下,我們只想編寫es2015代碼並在瀏覽器上運行該代碼,因爲我們的目標是支持es2015的瀏覽器。但是,我有一個在Safari 10.1下面的代碼有問題:從功能無法訪問的ES6根常量
const rootX = 1;
var varX = 2;
function g(){
console.log('var inside : ', varX);
console.log('const inside : ', rootX);
}
g();
在Safari 10.1,我得到的「參考錯誤,找不到變量:rootX」第二控制檯輸出線。這是正確的ES6行爲?我似乎無法找到任何人在網絡上討論這種情況。我的猜測是該函數在const
定義之上被掛起,因此const
未定義。 Chrome中使用相同的代碼。
我能找到的唯一解決方法是使g
爲胖箭頭功能。我可以這樣做,除非我們使用的一些npm模塊似乎也會碰到這個問題。這是es2015的預期行爲嗎?我能期待圖書館作者將在未來解決這些問題,還是我現在可以做些什麼來緩解這一問題?
您可以在這裏嘗試一下: http://jsbin.com/taruwudufu/edit?html,js,output
UPDATE:Safari瀏覽器技術預覽不會拋出這個錯誤,所以看起來它確實是一個Safari瀏覽器漏洞,將被固定前進。
不,這不正確的ES6行爲。把'g'改成箭頭函數可以解決任何問題也沒有什麼意義。 – Ryan
'我可以期待圖書館作者將來會解決這些問題嗎? - 如果該代碼的行爲如你所說,那麼問題出在Safari的JavaScript引擎 - Safari,新的互聯網爆炸者 –
是的,我也遇到過這個問題。絕對是圍繞塊範圍界定的Safari錯誤。 – loganfsmyth