ECMAScript

7 篇文章 0 订阅

 

ECMAScript 

ES6.0是JavaScript语言下一代标准,2015遍6月正式发布

目标:使JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言

 

 ES5

  • 严格模式:strict mode 即在严格条件下运行

    1. 消除JavaScript语言的一些不合理,不严谨之处,减少一些怪异行为

    2. 消除代码运行的一些不安全之处,保证代码运行的安全

    3. 提高编译器效率,为未来的JavaScript做好铺垫

    • 注:严格模式必须在程序顶部

    • 声明变量必须先声明,必须要有var关键字

    • 严格模式下不能删除变量

    • 在函数里的this没有对象,返回undefined

  • JSON对象

    • JSON.stringify(obj/arr):将js对象 /数组转为json对象(数组)

    • JSON.parse(json):将json对象数组转换为js对象(数组)

  • Object扩展

    • Object.create(prototype,[descriptors])

    • 作用:以制定对象为原型创建新的对象,为新的对象制定新的属性,并对属性进行描述

      1. value:指定值

      2. writable:标识杜昂前属性值能否被修改,默认Wiefalse

      3. configurable:标识当前属性能否被删除。默认为false

      4. enumerble:标识当前属性能否用for in枚举。默认为false

    • Object.defineProperties(object,descripetors)

      1. 作用:为指定对象定义扩展多个属性

      2. get:用来获取当前属性值的回调函数

      3. set:修改当前属性值的触发的回调函数,并且实参即为修改后的值

  • Array扩展

    • indexOf(value):得到值在数组中的第一个下标

    • lastIndexOf(value):得到值在数组中的最后一个下标

    • forEach(function(item,index){}):forEach不用于对象的循环使用

    • map(function(item,index){}):遍历数组返回一个新的数组,返回加工之后的值

    • filter(function(item,index){}):遍历过滤出一个新的数组,返回条件为true的值

  • Function扩展:function.prototype.bind(obj) 将函数内的this绑定为obj,并将函数返回

    • function fun(age){

      this.name='liu';

      this.age=age;}

      var obj ={}

      fun.bind(obj,23)()

      console.log(obj.name,obj.age)//liu 23

       

  • ES6简介

  • 增加了let命令,用来声明变量,类似于var

    • 与var的区别

      1. let不能重复声明变量,代表唯一

      2. 不存在变量提升

      3. let声明的变量只在它所声明的代码块内有效

  • const声明的常量,后期不能修改常量的值

    • 语法:const 常量名=值

      1. 只能声明1次,定义了常量就不能进行修改

      2. 常量的命名遵循驼峰命名法,多个单词用_隔开

      3. 声明常量后就要确定常量的值

      4. const只能在代码块内有效

  • 模板字符串:为增强版字符串,用反引号`表示,里面的变量用${}抱起来就可以实现

    •  var n=10 
       ​
       $("div").append(`there are<b>${n}</b>`);
  • let解析

    • 结构赋值

      1. let {参数名}=对象 若不存在参数,则输出undefined

    • 解析对象

      1. let{参数1,参数2}={属性1:值1,属性2:值2}

    • 解析数组:let [a,b]=数组

      • 默认从数组第一个开始输出

  • 箭头函数

    • es6允许用箭头=> 声明函数。 格式:()=>等价于function( ) {}

      • 没有参数时 语法 :变量名=( )=>{函数体}

         var f=()=>{console.log('10')}

         

      • 有参数时 语法:变量名=(参数1,参数2)=>{函数体},如果只有一个函数,可以将( )省略,

        两个或两个以上参数不能省略( ) ,每个参数用逗号' ,' 隔开

            let fun1=()=>{
                     return 456
                          }
      • 有返回值时 语法:变量名=(参数)=>{return 返回值}

        若函数体重就一条语句,可省略大括号{},若该语句是返回值,可以省略return

  • 箭头函数的this

    • 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象

    • 不可以当作构造函数,即不可以使用new命令,否则会抛出一个错误

    • 不可以使用argument对象,该对象在函数体内不存在,如果要用,可以使用rest参数代替

  • 扩展运算符:是三个点(...) ,好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列

         console.log(...[1,2,3])//1 ,2 ,3
         console.log(1,...[2,3,4],5)//1,2,3,4,5
          //一般用于函数调用
          function add(x,y){
              return x+y
          }
          const number=[2,3]
          console.log(add(...number))//5

应用:可以复制数组,将类似数组转换为真正的数组

     //复制数组
          const a1= [1,2]
          const a2 = [...a1]
          console.log(a2)
 ​
          //将  类似数组转为真正的数组
         console.log([...'hello']);//["h", "e", "l", "l", "o"]
         
  • 函数默认值:ES6之前不能直接为函数的参数指定默认值,只能采用变通的方法

    •  ES5:
       function log(x,y){
                   y=y||'world';
                   console.log(x,y)
               }
       ​
               log('hello')//hello world
               log('hello','China')//hello China
               log('Hello','')//Hello world
       ​
       ​
       ES6:
       function log(x, y = 'world') {
                   console.log(x, y)
               }
               log('hello') //hello world
               log('hello', 'China') //hello China
               log('Hello', '') //Hello 
       ​
    • ES6的默认值写法,更简洁,阅读代码的人可立即意识到哪些是可以省略的,不用查看函数体或文档;其次,有利于将来的代码优化

    • 参数变量是默认声明的,所以不能使用const 和let再次声明

               function foo(x=5){
                 
                    let x=1;//error
                   const x=2//error
                   
               }
               foo()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值