var let const
JS中作用域有:全局作用域、函數作用域。沒有塊作用域的概念
ECMAScript 6(簡稱ES6)中新增了塊級作用域。塊作用域由 { } 包括,if語句和for語句裏面的{ }也屬於塊作用域。
1.var定義變量,沒有塊的概念,可以跨塊訪問,不能跨函數訪問,不初始化出現undefined,不會報錯。
2.let定義變量,只能在塊作用域裏訪問,也不能跨函數訪問,對函數外部無影響。
3.const定義常量,只能在塊作用域裏訪問,也不能跨函數訪問,使用時必須初始化(即必須賦值),而且不能修改(const用來聲明常量)。
舉個例子
var arr=[];
for(var i=0;i<7;i++)
{
arr[i]=function(){
console.log(i);
}
}
for(var j=0;j<arr.length;j++)
{
arr[j]();
}//結果-》6666666
/****************************/
var arr=[];
for(let i=0;i<7;i++)
{
arr[i]=function(){
console.log(i);
}
}
for(var j=0;j<arr.length;j++)
{
arr[j]();
}//結果-》0123456