一、let与var的区别:
1.let不会变量提升
变量提升的意思:
console.log(i);
var i = 0;
输出结果为undefined。
原因是为上面两行代码等同于:
var i;
console.log(i);
i = 0;
这就是变量提升,会将对变量的定义放到代码块的最顶部。
MDN的说明
2.let只在当前代码块内有效
使用var有一个常见问题:
for(var i = 0;i < 3;i++){
console.log(‘yes’)
}
console.log(‘i=’+i)
会打印出来"i=3"
但是用let,就不会出现这个问题
for(let i = 0;i < 3;i++){
console.log(‘yes’)
}
console.log(‘i=’+i)
执行这段代码则会报错,说i没有被定义。
二、const
const是用来定义常量的,一旦定义好,就不能再修改了。
但是const只是用来限制指向的内存地址不能改变,但是如果这个内存地址上的数据改变了,是可以的。或者说得直白一点,就是指向的如果是一个可变的容器,容器中的数据改变了,那么是允许的。
这里突然想到了 C语言里面学的指针~
三、函数
1.默认参数:
关键词:MDN里的解构赋值
function person(name,{age=18,gender=‘女’}={}){
console.log(name,age,gender);
}
person(“知了”,{gender:“男”});
2.箭头函数:
item => {
console.log(item)
}
(item1,item2)=>(item1+item2)
箭头函数有个特点,就是箭头函数完全修复了匿名函数中this的指向,this总是指向词法作用域。
详情见廖雪峰箭头函数