一、let和const
let声明块级变量
1.只在声明的代码块内有效
2.在同一作用域内不允许重复声明(但是何以重新赋值)
3.没有变量提升(不能提前打印)
4.暂时性死区
5.let声明的变量是局部变量(块级作用域)
const只读常量
特征:声明的是常量,不允许被重新赋值。
0.没有常量提升(不能提前打印)
1、使用const必须初始化
2、一般常量用大写( 潜规则)
3、常量的值不允许被修改(保证变量指向的内存地址所保存的数据不允许改变,数据类型也不可变)数组和对象可以重新赋值,基础数据类型不可重新,引用数据类型可以重新赋值
4.局部常量(块级作用域)
5.在同一作用域内不允许重复声明
二、数据类型symbol
Symbol类型的数据是类似字符串的数据类型,由于Symbol函数返回的值是原始 类型的数据,不是对象,故Symbol函数前不能使用new命令,否则会报错。
三、解构
1多声明的变量输出结果为undefined,多定义的数值会被省略。
let [a,b,c]=[1,2,3] 输出结果a=1b=2c=3 嵌套 let [n,[m]]=[1,[2]]; 对象 let{name,age}={name:"王mm",age:"33"};
四、箭头函数
-
箭头函数没有自己的this,他会向上找父级或上层的this指向
-
箭头函数的this不是调用的时候决定的,而是在定义的时候决定的
-
箭头函数不会创建自己的this,他只会从自己的作用域链的上一层继承this
-
省略了function关键字改为=> 没有形参情况下直接写括号,形参若为一个括号可省略。只写一句代码花括号可省略但不这么写。
let fun = (a) =>{ console.log(a); } fun(1);
l箭头函数注意点
1.箭头函数不能做构造函数,和new一起会抛出错误,不能被实例化。
2.箭头函数没有protoTyte属性(原型)
五、模板字符串
··${变量}