目录
一、ES6补充
1、let 和 var 区别:
- ES5中的var是没有块级作用域的(if/for),ES6中的let是有块级作用的(if/for)
- ES5之前因为if和for都没有块级作用域的概念, 所以在很多时候, 我们都必须借助于function的作用域来解决应用外面变量的问题.
- ES6中,加入了let, let它是有if和for的块级作用域.
情况一:ES5中没有使用闭包
1.变量作用域: 变量在什么范围内是可用
用var定义的变量,在函数里面和外面都可以调用变量
<script>
// 1.变量作用域: 变量在什么范围内是可用.
{
var name = 'why';
console.log(name);
}
console.log(name);
</script>
运行结果:
2.没有块级作用域引起的问题: if的块级
<script>
var func;
if (true) {
var name = 'why';
func = function () {
console.log(name);
}
func()
}
// 目的是调用函数,输出函数内部定义的 name 但是现在在函数外面也可以修改函数里的变量
name = 'kobe'
func()
// console.log(name);
</script>
运行结果: