放在开头
这一次项目中担任的是前端开发,然后这个前端的知识,在之前的学习中还是属于ES5和jQuery的内容,所以现在开始学习ES6以及一些现代的框架比如VUE等新的知识,这里就记录一下,对ES6的学习吧。
用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
let,声明的变量仅在块级作用域内有效。
{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
对于for循环很有意思,控制条件和循环体不是一个域
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc
就是哪怕外面有同名全局变量,但是在内部有let或者const的同名变量,那么在let前不能使用此变量。
typeof不再安全
typeof x; // ReferenceError
let x;
{{todo}}
ES5中的一些东西这里不一样了,比如IIFE,但是具体浏览器或者环境支持的程度不明确。
保证一个变量的指向的内存地址不得改动,怎么来理解这句话呢,如果是简单变量比如int,那么就是他就是存在这个地址的,所有不可以改变。但是复杂的数据结构就不一样,等于规定了他只能指向这个结构但是这个结构里面是可以改动的。
所以无法用const使得一个对象变成不可变的。要用freeze。
const a = [];
a.push('Hello'); // 可执行
a.length = 0; // 可执行
a = ['Dave']; // 报错
window还是global,全局还是顶层?
ES5中,你不去特意声明,你的全局变量就是顶层对象的属性。