变量声明
let
1、不会提升变量
2、不能重复声明
3、局部作用域
const
1、建议变量名大写
2、必须赋值
3、赋值购不能修改
4、局部作用域
5、没有变量提升
解构
把对象或者数组解析为单独的变量
数组
用,分割可以跳过
...剩余值
给默认值
有顺序的
let[a,,b,,c,d=10,...res] = arr;
对象解构
let{age,name,eye = 2} = obj;
变量名和对象的键名保持一致
无序的
字符串
模板
``包裹字符串,${变量}
语义清晰,可以包含特殊字符串;保留换行
检测
includes是否包含
startsWith是否开头包含
endsWith是否结尾包含
常见方法
repeat(n)把字符串重复n次
padStart(len,sub)把字符串用n填充len长度
padEnd(len,sub)从后开始填充
函数
1.箭头函数
定义:ES6 中,箭头函数就是函数的一种简写形式,使用括号包裹参数,跟随一个 =>,紧接着是函数体;
①=> 前面是函数参数 =>后面是返回值也是执行语句
var getPrice = function() { return 4.55; };
var getPrice = () => 4.55;
②多个参数 或者没有 都用括号包起来
var arr3 = ["mumu","zql","曾庆林"]; arr3.forEach( (item,index,self) => console.log(item,index,self) )
③执行语句有多个的时候 用{}包括起来
var arr4 = [70,33,52,89,14,80,87];
var arr5 = arr4.filter( item => {
if(item>=70){return true}
else{return false} } )
④箭头函数this 指的是函数上一层的this
var obj = {
age:16,
grow:function(){
setTimeout(()=>{
this.age++;
console.log("我的年纪是"+this.age) }) } }
obj.grow();
⑤返回值如果是对象字面量形式用()包裹
2.默认参数
function say (age=18){
alert("大家好我今年"+age+"岁了") }
say(); //大家好我今年18岁了
say(16);//大家好我今年16岁了
3.参数不定
function add(...arg){
var total = 0; // 总数
arg.forEach(item=>total+=item); }
dd(1,2); //3
add(2,3,4); //2+3+4
add(2,1,1,6); //2+1+1+6
对象
1.对象简写
let color="白色";
let name = "Kitty";
let cat = {color,name};
console.log(cat) //{color:"白色",name:"Kitty"}
函数简写与动态属性值
var obj = { name:"木木", ["nick"+"name"]:"小木木", say(){alert(this.name)} } //nickname:"小木木"
2.super方法
var parent = {
foo() {
console.log("Hello from the Parent"); } }
var child = {
foo() {
super.foo();
console.log("Hello from the Child"); } }
Object.setPrototypeOf(child, parent); child.foo();
//Object.setPrototypeOf(a,b),为现有对象设置原型,返回一个新对象
//接收两个参数:第一个是现有对象,第二是原型对象。