JavaScript 的ES6

ES6声明变量 let const var

 <script>
      /* 声明变量关键字
        1. ES5声明变量 var 
            1.1 有变量预解析
            1.2 没有块级作用域

        2.ES6声明变量 let const
            1.1 没有变量预解析
            1.2 有块级作用域

        3. let与const区别
            let : 变量。 可以修改
            const : 常量。 不可以修改
        * 实际开发中, 只要不修改的变量都用const,需要改的时候用let
      */

      //1. ES5声明变量 var
      // 1.1 预解析 :  变量的声明会提升到当前作用域最顶端
      console.log(num)
      var num = 10

      /* 
        var num
        console.log( num )
        num = 10
      */

      //1.2 没有块级作用域 :
      for (var i = 1; i <= 5; i++) {
    
    }
      console.log(i)

    </script>

对象的解构赋值 : 变量赋值的简写(解构精髓:当变量名 和 对象属性值一致的时候,只需要写一个)

1. 取出对象的属性  赋值 给 变量
                let {
    
     name,age,sex } = obj
            2. 取出变量的属性  赋值 给 对象
                let obj = {
    
     
                    name,// name : name
                    age,
                    sex 
                }

数组解构

 <script>
        /*数组解构 
        1.取出数组元素 赋值给变量
        2.取出变量的值 赋值给数组元素
        */    

        let arr = [10,20,30]

        //ES5
        // let n1 = arr[0]
        // let n2 = arr[1]
        // let n3 = arr[2]
        // let n4 = arr[3]
        //ES6
        let [n1,n2,n3,n4]  = arr
        console.log( n1,n2,n3,n4)//10 20 30 undefined

        //取出变量的值 赋值给数组
        let num1 = 1
        let num2 = 2
        let arr1 = [num1,num2]
        
    </script>

函数参数解构

<script>
         /* 函数参数解构: 当函数参数是对象类型,就可以对形参进行解构 */
         
         //传参本质: 实参给形参赋值
         function fn(obj){
    
    // let obj = {name:'张三',age:20,sex:'男'}
            console.log( obj )
            //对函数形参进行解构
            let {
    
    name,sex,age} = obj
            console.log( name,sex,age )
         }

         function fn1( {
    
    name,sex,age} ){
    
    // let {name,sex,age} = {name:'张三',age:20,sex:'男'}
            console.log( name,sex,age )
         }

         fn( {
    
    name:'张三',age:20,sex:'男'} )
         fn1( {
    
    name:'张三',age:20,sex:'男'} )
        
    </script>

1.箭头函数 : 相当于 function函数的简写 (1)去掉function,改成 箭头 => (2)形参小括号写到箭头左边 2.箭头函数语法注意点 2.1 如果箭头函数只有一个形参,则可以省略小括号 2.2 如果箭头函数的 函数体 只有一行代码,则可以省略大括号。 (此时必须省略return)

 1.function函数this有三种指向 :  谁 调用我 , 我就指向谁
            普通函数:   函数名()           this -> window
            对象方法:   对象名.函数名()     this -> 对象名
            构造函数:   new 函数名()       this -> new创建实例

        2.箭头函数this : 没有this
            * 箭头函数本质是访问 上级作用域中的this

** //由于箭头函数没有this,所以箭头函数不能作为构造函数 (new会修改this指向,而箭头没有this)
// new fn()
//箭头函数也无法修改this (call apply bind)对箭头函数是无效的
fn.call({name:‘张三’})
//由于箭头函数没有this,所以箭头函数一般不作为事件处理函数**

 <script>
      let obj = {
    
    
        name: "zhang",
        eat() {
    
    
          //1级   this : obj
          function fn1() {
    
    
            //2级  
            console.log(this)//window  
          }
          fn1()
          let fn2 = () => {
    
    
            //2级  : 箭头函数访问上级 1级obj
            console.log(this)//obj   
          }
          fn2()
        },
        learn: () => {
    
    
          //1级 : 上级 this->window
          function fn1() {
    
    
            console.log(this)//window 
          }
          fn1()
          let fn2 = () => {
    
    
            //2级  访问1级 this -> window  
            console.log(this)//window  
          }
          fn2()
        }
      }

      obj.eat()
      obj.learn()
    </script>

展开运算符 ,展开运算符: …相当于对象遍历的简写,1.连接两个数组2.求数组最大值

  <script>
        /* 
        1.展开运算符:  ...
            相当于对象遍历的简写
        2.应用 
            2.1 连接两个数组
            2.2 求数组最大值
        */    

        let arr1 = [10,20,30]
        let arr2 = [40,50,60]

        //ES5 :  concat()
        // let arr = arr1.concat(arr2)
        // arr.push(70)
        //ES6
        let arr = [...arr1,...arr2,70]
        console.log( arr )

        //求数组最大值

        let max = Math.max(...arr1,...arr2)
        console.log( max )
        
    </script>

set 数组去重 * Set相当于是数组类型, 和数组Array唯一的区别是不能存储重复元素

<script>
        /* 数据类型 Set : 集合
            * Set相当于是数组类型, 和数组Array唯一的区别是不能存储重复元素
        
        场景 :  数组去重
            let newArr = [ ...new Set(需要去重的数组) ]
        */    

        let arr = [10,20,30,50,60,88,20,50,60,90]
        console.log( arr )

        //1.创建Set,去除数组重复元素
        // let set = new Set( arr )
        // console.log( set )
        //2.把set变成真数组
        // let newArr = [...set]

        //经典面试题: 一行代码实现数组去重
        let newArr = [...new Set( arr ) ]
        console.log(newArr)
        
        
    </script>

猜你喜欢

转载自blog.csdn.net/qq_43944285/article/details/124640511