ES6(常用的、重点的)
数组API、正则API、字符串API都不讲
变量声明
es6 中变量声明方式6种 var function let const class import 形参
总结:【es6中语法】 在同一个作用域中【变量名】不能重复;
function 定义函数 函数声明提升
var 声明变量 变量提升
let 声明的变量
只能在当前块中使用。let 声明的变量;决定变量能在哪里使用;而不是 形成一个作用域
注意事项
-
在当前{} 中不能重复声明let 声明的变量
-
在当前{}中 let 声明的变量之前不能使用该变量 ----> 暂时性死区
-
函数体中 let不能声明形参
-
在同一个作用域中let 不能声明函数名
-
内层{} 声明的变量不影响外层{} 声明的变量
-
var 声明的变量;在提升;只要遇到let 重名;一律报错;不允许重复,默认提升到当前let 的块级域顶端
-
for 中的let 默认() 中let 为父级作用域, {} let为子作用域、
-
for循环特殊;执行多次所以可以形成多个块级作用域
z 块级作用域
let const 声明的变量能在哪里用的问题
- 没有变量提升
- 不能重复命名
- 块级作用域
模板字符串
- 模板字符串的基本用法
var s1 = `abc`
- 模板字符串的优势:
var obj={ name:"",age:5 };
var s1 ="我叫:"+obj.name+",今年:"+obj.age+"岁。"
解构赋值
解构赋值;赋值的内容要么是对象要么是数组。其他类型会报错的。
从对象和数组中取值的另一种方式
- 对象的解构赋值
var obj={name:"张三",age:18}
var {name,age}=obj;
//生成2个变量,
// name值来自于obj.name、
// age值来自于obj.age
var {name:title}=obj;
//生成一个变量:title,值来自于obj.name
- 函数参数的解构赋值
function f1(obj){
console.log(obj.age);
console.log(obj.height)
}
//等价于
function f1({ age,height }){
console.log(age);
console.log(height)
}
f1({age:5,height:180})
- 补充:属性的简写
var a = 3 ;
var c = 10;
var b = { a,c } ;
//b对象有一个a属性,a属性的值,来自于a变量 ,
//还有一个c属性,c属性的值来自于c变量
console.log(b)
super
- 1: super 只存在对象的简写函数中
- 2:super 指向的原型对象
如何判断:super 为那个原型对象?
1:判断简写函数中this
2: 再找super,**super == this.__protp__**