let
用来声明变量的,不能重复声明,可以重复的赋值
const
用来声明常量,一旦声明必须赋值,且值不能再改 使用const声明的常量不可以重复声明和赋值
var
用来声明变量的,可以重复声明,可以重复的赋值
相同点
都是声明的关键字
不同点
-
var有变量的提升
-
作用域:var声明的变量在window对象中,let和const的变量在独立的块级作用域中
-
let可以重复赋值,const不能重复赋值
es6的【暂时性死区】
-
原因就是let和const的块作用域的特性
-
当let或const放在{}里的时候,这个{}就会变成块级作用域,被let或const声明的变量锁死--暂时性死区
-
在es5时代,作用域只有全局的window和局部的函数作用域,受条件限制,for循环,if和switch里的变量会污染全局,现在又了let和const之后,凡是有{}的代码块里面使用了let或const则{}就会变成块级作用域
三者的使用场景
-
let适合在for循环中的定时器使用,作为强类型语法限制的变量
-
const适合作为一次性赋值的常量,多用于数据的版本号或id
-
var适合兼容老的ie浏览器,对于很旧的项目使用比较多,目前推荐使用let代替
模板字符串/超级字符串
-
可以换行,并且原格式输出,自动添加制表符
-
可以使用
${}
的形式插入表达式或变量
es6里的解构赋值
对象
-
使用{}去解构,不光解构自身属性还解构原型上的属性
-
对于对象自身没有找到的属性,解构除了的变量的值是undefined
数组
-
使用[]去解构,按顺序解构
-
对于不存在的,得到的值也是undefined
解构赋值中的对象和数组的区别是?
-
对象解构按属性名解构
-
数组解构按位置解构
解构赋值中的默认值
-
var [a=1]=[]
如果目标数据中么有对应的项,则使用默认值
function 和箭头函数
相同点
-
都是函数
-
都有局部作用域
不同点
-
语法不同
-
this指向不同
-
function指向调用它的对象
-
箭头指向上一层作用域里的对象
-
-
不定参伪数组 1.function 函数中有arguments 2.箭头函数没有arguments,但是可以使用...扩展运算符得到类似的形参集合
-
箭头函数不可以作为构造函数使用,不可以使用new调用
-
箭头函数没有原型对象
-
箭头函数只能是匿名函数
-
箭头函数不能改变this指向
函数的重载
一个函数根据传入的不同的参数,执行不同的业务,实现不同的效果,这就叫函数重载
函数尾部调用
-
一个函数返回的是另一个函数的返回值
-
目的是为了数据的传递和加工,节省内存的释放
函数的链式调用
列子:$('#box).css('color','red').hide().show()
-
核心概念:每一个被调用的函数都会返回一个值,链式调用中的返回值一般都是操作的目标元素的this