一、var let const
1、var
var明明定义在for里面的但是外部能够访问这个变量,说明var可以跨域访问。
2、let
let明明定义在for里面的但是外部不能够访问这个变量,说明let不可以跨域访问。
3、const
const foo = {};
// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123
// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only
上面代码中,常量foo储存的是一个地址,这个地址指向一个对象。
不可变的只是这个地址,即不能把foo指向另一个地址,但对象本身是可变的,所以依然可以为其添加新属性。
二、ES6 允许块级作用域的任意嵌套。
function f1() {
let n = 5;
if (true) {
let n = 10;
}
console.log(n); // 5
}
上面的函数有两个代码块,都声明了变量n,运行后输出5。这表示外层代码块不受内层代码块的影响。
如果两次都使用var定义变量n,最后输出的值才是10。
三、=>与function
1、使用function
报错。因为,作用域的限制,this表示wx.getSystemInfo(){}这个对象所以导致其访问不到setData()函数。
正确。因为,此时表示的是最外层function的对象
2、使用=>
都不会报错,因为该表达式没有作用域。
四、增强表达赋值
1、字符串式赋
2、数组式赋值
3、函数式赋值
4、对象式赋值
五、类与对象 1、es5 2、es6