ES6 常用语法

ES6的变量声明

ES6新增了let和const来定义变量,

var:定义全局变量,没有块的概念,可以跨块访问, 不能跨函数访问。

let:定义局部变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问

const:定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。

注:const是可以被修改的,对象是引用类型的,const仅保证指针不发生改变,修改对象的属性不会改变对象的指针,所以是被允许的。也就是说const定义的引用类型只要指针不发生改变,其他的不论如何改变都是允许的。

var:全局变量

 {
    var a=1
  }
  a=2
    function fn(){
      var b=1
    }
    console.log(a)//a=2
    console.log(b)//b is not defined

let:局部变量

 {
    let a=1
  }
    function fn(){
      let b=1
    }
    console.log(a) //a is not defined
    console.log(b) //b is not defined

const:定义常量

  {
    const a=1
  }
    function fn(){
      const b=1
    }
    const c={
      name:"孙悟空",
      age:12
    }
    const d = 8
    console.log(a) //a is not defined
    console.log(b) //b is not defined
    c.name = "猪八戒"
    console.log(c) //{name: '猪八戒', age: 12}
    d=6
    console.log(d) //Assignment to constant variable.

变量的解构赋值

通过数组或者对象的方式,对一组变量进行赋值,这就是解构

数组解构

     let a=1,b=2,c=3
     let [a,b,c] = [1,2,3]

两者的效果一样

解构是可以有默认值的

    let [a=1]=[]
    console.log(a) //1

    let [b,c] = [2]
    console.log(b+','+c) //2,undefined

null和undefined的区别

null 表示值为null

undefined 表示没有,有默认值会采用默认值

    let [a,b=1]=[2,undefined]
    console.log(a+','+b) //2,1

    let [c,d=5] = [2,null]
    console.log(c+','+d) //2,null

对象解构

    let {a,b}={b:"我是b",a:"我是a"}
    console.log(a+','+b)  //我是a,我是b

对象解构与数组解构不同的是变量的取值,数组变量取值是由它的位置决定的,而对象是根据键来获取值的

注意:如果变量a在之前已经被定义,如果要再去解构a,需加上圆括号()

    let a="孙悟空";
    ({a}={a:"猪八戒"})
    console.log(a)  //猪八戒

扩展运算符

在写代码过程中,如果定义的方法不知道参数的个数时,可以使用扩展运算符作为参数

    function fn(a,b){
      console.log(a + ','+ b +',' +c)//c is not defined
    }
    fn(1,2)

c参数没有使用,所有报错了,如果用扩展运算符就不会

    function fn(...arg){
      console.log(arg[0] + ','+ arg[1] +',' +arg[2])//1,2,undefined
    }
    fn(1,2)

注意:在数组赋值中,直接赋值会指向同一个内存地址,如果使用扩展运算符会开辟一个新的内存地址,什么意思呢?看下面代码

    let arr1=[1,2,3,4,5]
    let arr2=arr1
    console.log(arr1)
    console.log(arr2)
    console.log('---------------------')
    arr2.push(6)
    console.log(arr1)
    console.log(arr2)

输出结果

 指向同一内存地址,修改其中一个都会把指向该内存地址的值修改,下面使用扩展运算符

    let arr1=[1,2,3,4,5]
    let arr2=[...arr1]
    console.log(arr1)
    console.log(arr2)
    console.log('---------------------')
    arr2.push(6)
    console.log(arr1)
    console.log(arr2)

输出结果

rest运算符

rest表示剩余部分,表示后面剩余的参数

function fn(a,b,...arg){
  console.log(arg.length)
}
fn(1,2,3,4,5,6) //输出:4

 去除前面两个数1和2,后面还剩4个

循环 for...of

在ES6中循环数组,使用for...of,可以避免我们开拓内存空间,增加代码运行效率,

    let arr=[1,2,3,4,5]
    for(let val of arr){
      console.log(val)
    }

箭头函数

 箭头函数有助于我们清楚地找到函数名、参数名和方法体,看看下面代码是什么意思

    let fn = (a, b) => a + b
    console.log(fn(1,2)) 

没错,上面的结果就是输出3,等同于下面的代码

    function fn(a,b) {
      return a+b
    }
    console.log(fn(1,2))

是不是第一种更加简洁呢,在箭头函数中还可以设置默认值,但是要注意的是,如果箭头函数方法体中有两句或两句以上的代码,就要加{ }大括号

模板字符串

在进行拼接字符串的时候,我们一般会这样写

    let name="孙悟空",age=23
    console.log('name:' + name +',age:' +age) //name:孙悟空,age:23

这样是不是很繁琐,也容易出错,如果使用ES6语法中的模板字符串就比较简单,但是是使用反引号` `,而不是单引号

    let name="孙悟空",age=23
    console.log(`name:${name},age:${age}`) //name:孙悟空,age:23

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值