重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
let 与 var 的区别在于作用域不一样。let被用来做块作用域,它比函数作用域要小一点。
如果他们两个都没有被定义在函数中也没有定义在块作用域中,那么他们就都属于全局作用域。
创新互联专注于井陉矿网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供井陉矿营销型网站建设,井陉矿网站制作、井陉矿网页设计、井陉矿网站官网定制、成都微信小程序服务,打造井陉矿网络公司原创品牌,更为您提供井陉矿网站排名全网营销落地服务。
let bar = 'hehe';
var baz = 'lala';
console.log(window.bar); //undefined
console.log(window.baz); // 'able'
函数作用域
var 和 let 在函数作用域中声明一个变量,两个变量的意义是相同的。
function aFun(){
let bar = 'hehe'; // 函数作用域中的变量
var baz = 'lala'; // 函数作用域中的变量
}
块作用域
在块作用域中两者的区别较为明显, let只在for()循环中可用,而 var是对于包围for循环的整个函数可用
function aFun1(){
// i 对于for循环外的范围是不可见的(i is not defined)
for(let i = 1; i<5; i++){
// i只有在这里是可见的
}
// i 对于for循环外的范围是不可见的(i is not defined)
}
function aFun2(){
// i 对于for循环外的范围是可见的
for(var i = 1;i<5; i++){
// i 在for 在整个函数体内都是可见的
}
// i 对于for循环外的范围是可见的
}
let 和var 重新声明
let me = 'foo';
let me = 'bar'; //SyntaxError: Identifier 'me' has already been declared
var me = 'foo';
var me = 'bar'; //这里me被替代了,是可以重复声明的
const hehe; //报错,Missing initializer in const declaration
const a = 3;
a = 5; //报错,Uncaught TypeError: Assignment to constant variable.