1.块级作用域
1.let和const取代var
let声明变量不会挂在window当中,不会造成全局污染;let新增块级作用域;let不允许重复声明;let不会有声明提升,只是提升到暂时性死区,人为看不到。
const同let,但是const定义常量,不允许被修改,不允许改变内存地址,且const声明与赋值必须一次性完成。
console.log(a);
var a = 10;
console.log(b);
let b = 10;
以上代码a会输出undefined,b会直接报错。
在全局环境下,优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量。const声明常量还有两个好处,一是阅读代码的人立刻会意识到不应该修改这个值,二是防止了无意间修改变量值所导致的错误。所有的函数都应该设置为常量。
2.字符串
静态字符串一律使用单引号或反引号,动态字符串使用反引号。
// bad
const a = "foobar";
const b = 'foo' + a + 'bar';
// acceptable
const c = `foobar`;
// good
const a = 'foobar';
const b = `foo${a}bar`;
3.数组
使用数组成员对变量赋值时,优先使用解构赋值。
const arr = [1, 2, 3, 4];
// bad
const first = arr[0];
const second = arr[1];
// good
const [first, second] = arr;
使用扩展运算符(...)对数组进行拷贝,转换
扩展运算符主要作用,展开数组,收集数组内容
const arrCopy = [...arr];
let arr = [...document.querySelectorAll('div')]
console.log(arr)