2016-01-24 52 views
0

在ES2016,我想知道,如果這個聲明的變量是最好的做法是在聲明一個變量,如果聲明:的if語句(在ES2016好的做法)

ECMA2016

let x = 1 
if (false) { 
    x = 0 
} 
console.log(x) // 1 

ES2016之前,使用VAR

if (true) { 
    var x = 1 
} else { 
    var x = 0 
} 
console.log(x) // 1 
+0

我認爲你的意思ES2015還,同樣可以用'var'的應用好。 – thefourtheye

回答

-1

使用ECMA2016,您不能在if塊中聲明新變量,然後使用該塊的另一個。所以,你的變體看起來不錯。

+0

呃? 'if(true){var x = 1; }; console.log(x);'工作得很好。 –

+0

我認爲IIiya意味着你不能那樣做。在這種情況下,var仍然可以正常工作,儘管定義var x仍然是最佳做法。即使你還沒有準備好分配任何東西,它也可以用在它的使用範圍的頂部。 – Dtipson

+0

'var'作用於該函數。沒有在該塊中聲明它的概念。使用ES6,人們應該避免使用var聲明並使用'let'或'const'聲明具有與許多塊結構語言(特別是Java)類似的語義的變量。沒有ECMAScript2016規範,已經採用了ECMAScript2015(ES6)和正在審查的ECMAScript2017。 – John

1

在ES5最好的做法真的會

var x; 
if (true) { 
    x = 1 
} else { 
    x = 0 
} 

甚至

var x = true ? 1 : 0; 

因爲它總是清晰的在功能範圍(即使你不是頂部定義一個變種準備給它分配任何東西),也只能定義一次。

隨着ES2015你的例子是正確的:你應該定義在最高範圍/塊級X你想讓它在使用