一、var声明与变量提升
使用var关键字声明的变量,无论其实际声明位置在何处,都会被视为声明于所在函数的顶 部(如果声明不在任意函数内,则视为在全局作用域的顶部) let 声明的语法与 var 的语法一致,但会将变量的作用域限制在当前代码块中。上代码
if(false){
var value = 40
}
console.log(value)
if(false){
let value2 = 40
}
console.log(value2)
使用 const 声明的变量会被认为是常量,并且与 let 声明一样,都是块级声明。
const maxItems = 30
const name
if(condition){
const max = 5
}
基本的懂了来点复杂的
var funcs = [];
for (var i = 0; i < 10; i++) {
funcs.push(function() {
console.log(i);
});
}
funcs.forEach(function(func){
func()
})
var funcs = [];
for (let i = 0; i < 10; i++) {
funcs.push(function() {
console.log(i);
});
}
funcs.forEach(function(func){
func()
})
需要重点了解的是: let 声明在循环内部的行为是在规范中特别定义的,而与不提升变 量声明的特征没有必然联系。事实上,在早期 let 的实现中并没有这种行为,它是后来 才添加的。
总结
以上的内容是通过阅读深入理解ES6摘出来的。
|