ES6

18 阅读2分钟

ES6

let 和 const 关键字

  • let 和 const 的特点
  • 相同点:
    • 同一个变量名称不能重复声明
    • 防止了变量提升,不会在预解析的时候解析
    • 在{}(代码块)内部声明的变量,外部不能访问(具备块级作用域的特点)
  • 不同点:
    • let声明的值,可以被修改,可以是任意类型
    • const的值不能修改,但是引用类型,可以修改它的属性和方法,不能修改类型和地址

对字符串的增强

  • includes() 是否包含指定的字符串,存在返回true,不存在返回false
  • repeat(n) 重复的次数
  • startWith() 是否在开始位置
  • endWith() 是否在结束位置
  • padStart() es7 前面填充
  • padEnd() es7 后面填充
  • 字符串模版: `${变量名称}`

对数组的增强

  • Array.from() 把伪数组转换成数组
  • Array.of() 把一组值转换成数组
  • find() 方法返回数组中满足提供的测试函数的第一个元素的值。
  • findIndex( ) 在数组中找到对应元素的索引

对函数的增强(箭头函数)

  1. 箭头函数的this,它的this指向上下文对象 它本身没有this,利用call,bind,apply无法改变this指向
  2. 它默认情况是window(因为箭头函数的执行环境是全局的window)
  3. 它无法被实例化,不能被new

-注意点

    1. 可以小括号前面可以省略function关键字,小括号后面需要加上=>
const fn = ()=>{
    console.log("我是箭头函数")
}
    1. 没有参数的时候()不能被省略,参数只有一个可以省略小括号
const fn = num=>{
    console.log(num)
}

fn(num);
    1. 如果代码只有一句话,大括号和return都可以省略
const fn = num=>num;
console.log(fn)
  • 4.当返回的是对象的时候,需要用()括起当成一个整体,不写小括号会被当成是=>{}
var fn3 = name => ({name:name})

对对象的增强

  • 属性简写
var age = 20;
var sex = "男";
var obj = {
    age,
    sex
}
console.log(obj);
  • 方法简写
var obj = {
    // show:function(){
    // }
    show() {
    }
}
  • Object.assign() 对象的方法增加
var obj1 = { id: 1, name: "刘德华" }
var obj2 = { name: "留的", age: 1 }

//合并且替换
var obj3 = { ...obj1, ...obj3 }
console.log(obj3);

//合并返回新的对象
var obj4 = Object.assign({}, obj1, obj2)//obj1 和 obj2 没有变化
console.log(obj4);

var obj5 = Object.assign(obj1, obj2) //obj1变化了
console.log(obj5);

扩展运算符

  • ES6 里面号新添加了一个运算符 ... ,叫做扩展运算符

  • 作用是把数组展开

let arr = [1, 2, 3, 4, 5]
console.log(...arr) // 1 2 3 4 5
  • 合并数组的时候可以使用
let arr = [1, 2, 3, 4]
let arr2 = [...arr, 5]
console.log(arr2) //[1,2,3,4,5]
  • 也可以合并对象使用
let obj = {
  name: 'Jack',
  age: 18
}
let obj2 = {
  ...obj,
  gender: '男'
}
console.log(obj2)
  • 在函数传递参数的时候也可以使用
let arr = [1, 2, 3]
function fn(a, b, c) {
  console.log(a)
  console.log(b)
  console.log(c)
}
fn(...arr);// 等价于 fn(1, 2, 3)