es6的块级作用域的声明规则:只在使用大括号的情况下成立,没有大括号会报错
// 不报错
'use strict';
if (true) {
function f() {}
}
// 报错
'use strict';
if (true)
function f() {}
let和var命令的区别
var命令会发生‘变量提升’现象,即变量可以在声明前使用,值为undefined;
let声明的变量一定要在声明后使用,否则会报错;
{
for(let i = 0; i < 10; i++){
}
console.log(i); // undefined
}
{
for(var i = 0; i < 10; i++){
}
console.log(i); // 10
}
let和const命令的区别?
不同点:
1.let声明的变量,只在let命令所在的代码块内有效;
const声明一个常量,一旦声明,常量的值不能改变,必须立即初始化;
2:let在同一个作用域内,不允许重复声明同一个变量;
function bar(){
let a = 10;
var a = 1;
}
bar(); //Identifier 'a' has already been declared (标识符“a”已声明)
function bar2(){
let b = 10;
let b = 1;
}
bar2(); //Identifier 'a' has already been declared (标识符“a”已声明)