zoukankan      html  css  js  c++  java
  • es6 const

    1. 定义变量    但是  值是常量,一但赋值不能改变

    2. 不能重复定义变量

    3. 没有变量提升

    4.不会给window添加属性

    变量的解构赋值

    解构赋值

      数组解构赋值

      1.  前后模式必须匹配

      后面的值是什么格式,前面的变量也得是什么格式

      后面值是二维数组,前面的变量声明的时候也得是二维模式

      

      2.前多后少

      前面声明的变量多,后面赋值的值少,解构不成功,就相当于只声明了变量,但没赋值,解构不成功的变量值都是undefined

      

      3.钱少后多

        1.省略赋值

        

        2.不定参数解构赋值    使用...    叫拓展运算符   ...as将后面的值以数组的形式赋值给  as    拓展运算符必须写在后面

        

      4.带默认值的问题

        问题  先给默认值再解构赋值?   还是先解构赋值, 不考虑默认值?

      let [x,y=(function(){console.log("haha");return 10;})()]=[45,23]

        console.log(y)

      没有输出haha说明不是先给默认值,而是先解构赋值,不在考虑默认值。

     所有    就是解构不成功的时候,才会用默认值。就是没有赋值,没有定义

      var a=null     a=[]    a={}     a=""        这都叫定义了

      var a=undefined      才叫没定义

      所以只有结构的时候,后面是undefined的时候,才会用默认值,否则后面给什么就赋值什么。

      对象解构赋值

      1.变量和属性名必须同名,才可以解构赋值

      2.如果结构失败  值是undefined

      3.如果变量名跟属性名不一致

      前面name是属性   后面aa是变量。解构的机制,是对应的属性值赋值给后面的变量。

      4.对象解构的默认值问题

        默认值跟数组解构的默认值是一样的,解构成功就直接赋值,不执行默认值,解构不成功就是没有值,或者值是undefined执行默认值。

        let{name,age=45}={name:"zhang"}      age=45        解构不成功

        let{name,age=45}={name:"zhang",age:undefined} age=45       结构不成功

        let{name,age=45}={name:"zhang",age:12}     age=12

        let{name,age=45}={name:"zhang",age:null}     age=null

      5.对象解构赋值的注意点

    {}前面不能没东西 {a}={a:12} x

      6.等号右边在什么情况下能解构?

    等号右边的值只要带有length属性,都可以解构

    函数参数的解构

        1、函数参数的默认值

    前面是形参 后面是默认值。带默认值的参数尽量写后面。

    函数参数 等号左边是形参    右边是默认值    函数调用是不传参,走函数形参默认值,函数调用传参,默认值就不走了,走实参。

        2、函数参数的解构赋值

        3、函数作用域

          函数在调用的时候会形成一个私有作域,在这个作用域下声明的变量和参数变量都是私有变量,外界访问不到,同时它在操作相同的变量时,不会操作外部的。

        4、函数的一个类数组参数arguments 是实参构成的集合是一个类数组

    还有一种方式可以得到实参

    5.箭头函数

        1.箭头函数只使用与匿名函数

          let fn=function(){}   匿名函数

          做回调函数  fn(12,function(){})

          匿名函数:只要不是关键字function 声明的函数都叫匿名函数

          let  fn=(形参)=>{函数体}

          每个函数结束的时候一定要return

          当有一个参数的时候可以省略return

         2.当只有一个参数的时候可以省略()

          

         3、当函数体只有一行代码  且是return xxx; 时候可以省略{}和return

          

       箭头函数的优势

         1.箭头函数没有this指向

           函数中改变this指向的方法

          1.在函数提前对this赋值,that=this

          2.在函数的结尾处{}.bind(this)

          3.在函数的结尾处{}.apply(this)或者是{}.call(this)

          4.使用箭头函数

         2.箭头函数获取实参,不能使用arguments 用...arg

        

        3.箭头函数不能充当类

        因为里面的this指向window  而类中的this指向当前实例对象

    函数的角色

        函数可以扮演类    普通函数  Function的实例对象

        类

          每个类身上天生有一个prototype的属性,这个属性是一个对象,里面有一个constructor属性,属性值是他的类。

        注意  

          1.Object 是所有对象的基类   包括 window  event等

          2.普通函数的父类Function

          

          3.通过function定义的类,它的父类是Function

          

          4.所有示例对象的__proto__都指向父类的原型prototype

           

          

      对象.属性

       首先看对象中私有的属性中有没有设个属性,有就直接用,没有就使用__proto__向他的父类的原型(prototype)上查找

  • 相关阅读:
    Java三大主流框架概述
    ASP.NET的内置对象
    9月29
    第一章
    在java开发中,为什么要使用单例模式。。?
    《设计模式之禅》一书学习心得(连载中)
    网上的一些java算法题的个人练习笔记
    第四次作业
    看《构建之法》有感
    实验四
  • 原文地址:https://www.cnblogs.com/guhuai/p/11157431.html
Copyright © 2011-2022 走看看