ES6の宣言変数
ES6は、変数を定義するためのletとconstキーワードを追加しました:
var
:ES5およびES6、ある意味で、グローバル変数(変数ショート)を定義するために使用することができますlet
:別の方法として、(定義された同じスコープを繰り返すことは許されない)させ、ローカル変数を定義します。const
:定義定数(後で定義を変更することはできません)
VAR:グローバル変数
// 全局作用域
{
// 局部作用域
var x = 1;
}
console.log(x); // ?
ローカルスコープの変数ではなく、出力文のグローバル変数で、ローカル変数として宣言X、今回は出力は不定ではなく、1であります
// 全局作用域
var x = 1;
{
// 局部作用域
var x = 2;
}
console.log(x); // ?
その後、出力は2であり、xのvarはグローバル変数として宣言されているため、単純な理由があります
要約:変数を宣言するためにvarキーワードは、グローバル変数を汚染うグローバル変数、となります
トップへ戻る 目次
てみましょう:ローカル変数を
// 全局作用域
var x = 1;
{
// 局部作用域
let x = 2;
}
console.log(x); // ?
LETの宣言ローカルスコープでのみ有効なローカル変数は、グローバル変数xには影響しませんので、その後の出力は、1であります
// 全局作用域
var x = 1;
{
// 局部作用域
let x = 2;
}
console.log(x); // ?
// 全局作用域
var x = 1;
{
console.log(x) // Cannot access 'x' before initialization
// 局部作用域
let x = 2;
}
フェイス質問:以下の出力は何ですか?どのように出力0,1,2,3,4 ... buttons.length
var buttons = document.getElementsByTagName("button");
for(var i = 0;i < buttons.length;i++){
buttons[i].onclick = function(){
console.log(i);
}
}
印刷buttons.length時間buttons.length、ソリューション
var buttons = document.getElementsByTagName("button");
for(var i = 0;i < buttons.length;i++){
(function(i){
buttons[i].onclick = function(){
console.log(i);
}
})(i);
}
var buttons = document.getElementsByTagName("button");
for(let i = 0;i < buttons.length;i++){
buttons[i].onclick = function(){
console.log(i);
}
}
- 変数は、文が窓にぶら下がっていませんしましょう、グローバル変数は、環境汚染を引き起こすことはありません
- ブロックレベルの範囲を{}を加え、以前にのみ機能スコープ、グローバルスコープ
- 文は、繰り返しに許可されていませんしましょう
- (人が見るだけの効果は、実際には、事前に文は先に、一時的なデッドゾーンの、そこにある:にアクセスできません「x」を初期化する前に)事前に声明を聞かせていない面接のポイント
トップへ戻る 目次
CONST:定数
// 全局作用域
const x = 1;
{
// 局部作用域
const x = 2;
}
console.log(x) // 1
// 全局作用域
const x = 1;
{
console.log(x) // Uncaught ReferenceError: Cannot access 'x' before initialization
// 局部作用域
const x = 2;
}
// 全局作用域
const x = 1;
{
console.log(x) // Uncaught TypeError: Assignment to constant variable.
const x = 2;
}
- const変数の宣言は、グローバル変数汚染は発生しません、ウィンドウにハングしません
- constが声明を繰り返すことは許されません
- 事前に何の声明をCONSTない(唯一の効果の人々が見、実際には、先に一時的なデッドゾーンの事前の文は、あります:初期化の前にすることはできませんアクセス「NUM」)面接のポイント
- constがメモリアドレス空間を変更することはできません、変更することはできません
- constの宣言とワンタイム割り当てを完了する必要があり、後者は、ストレージスペースのアドレスを変更することはできません
- constが作るために使用することができます
- CONSTを使用すると、letでそれを使用することはできません。一定の効率が変数よりも高く、
トップへ戻る 目次