首页 > 其他 > 详细

关于ES6的新特性

时间:2019-08-14 19:43:39      阅读:69      评论:0      收藏:0      [点我收藏+]

1  let声明变量

    01    let声明的变量,不可重复声明,比如 let   a=1  ; let   a=2 ;这样申明会报错

    02    let声明的变量,有块级作用域,比如  if( ){ }这用语句  有了作用域

    03     let声明的变量不再声明提前

 for (var i = 0; i < 100; i++){
     setTimeout(function () { 
         console.log(i);
     }, 0)
 }
 //结果是输出  100个100;   
 //setTimout属于异步操作,它会在主线程代码执行完毕之后,才执行



 for (var let = 0; i < 100; i++){
      setTimeout(function () { 
          console.log(i);
      }, 0)
  }
// 结果是输出,0 1 2 3-----直到 99

 

2  const声明的叫做常量

    1. const声明变量不可以进行重复声明
    2. const声明也有块级作用域
    3. const声明的变量不能被修改值
    4. const声明变量的时候必须赋一个初始值!

作用: 防止变量被修改,一些不想被修随意修改的属性值,可以用const定义

 

总结:

  es6中声明变量:
  1. let 变量
  2. const 常量

  都有块级作用域
  都不能重复声明

  onst声明的变量不能被修改值
  const声明变量的时候必须赋一个初始值

 

3 ES6 对象简写

    01 属性简写,如果属性名属性值的变量名相同,就可以简写为一个

    02 方法简写,可以吧:和function去掉。

 1 // 如:
 2 let name = "周浩"
 3 let obj = {
 4     name: name,
 5      sing: function () { 
 6          console.log("你好帅!!!")
 7    }
 8  }
 9 
10 
11 //  es6 简写为:
12  let name = "周浩"
13  let obj = {
14      name,
15       sing() { 
16           console.log("你好帅!!!")
17     }
18   }

 

4解构赋值

01对象的解构赋值

 

 1 let obj = {
 2     name: "周浩",
 3     age: 18
 4 }
 5 //01普通方法获取对象中的属性值
 6  let name = obj.name;//周浩
 7  let age = obj.age;  //18
 8 
 9 
10 // 02解构赋值
11 // let {对象的属性名: 要声明的变量名} = 对象 如   :let { name: mingzi } = obj;
12 // 就会自动声明一个变量出来,变量的值就是对象中对应的属性的值
13 let { name: mingzi } = obj;
14 console.log(mingzi);
15 
16 
17 // let {对象的属性名: 要声明的变量名} = 对象
18 // 03如果 对象的属性名 和要声明的变量名同名 可以简写成一个,(对象的简写+解构赋值)
19 // let { name: name, age: age } = obj;
20  let { name, age } = obj;
21  console.log(name, age);

 

对象和函数的解构赋值应用,如下

 1 let obj = {
 2     name: "周浩",
 3     age: 18
 4 }
 5 
 6 function test({name, age}) {//设置解构
 7     console.log(name, age)
 8 }
 9  
10 test(obj);//把对象直接传入,在函数形参设置解构

 

数组的解构,如下

 1 let arr = [1, 2, 3, 4];
 2 //普通获取数组中值的写法
 3 // let num1 = arr[0]
 4 // let num2 = arr[1]
 5 // let num3 = arr[2]
 6 // let num4 = arr[3]
 7 //利用解构的写法,获取数组中的值
 8 let [num1, num2, num3, num4] = arr;
 9 console.log(num1)// 1
10 console.log(num2)// 2
11 console.log(num3)// 3
12 console.log(num4)// 4

// let arr = [[1, 2], [3, 4]];

// let [[num1, num2], [num3, num4]] = arr;

// console.log(num1, num2,num3, num4)
结果 : 1  2  3  4
 

 

数组解构中的剩余元素(RestElement)

 

let arr = [1, 2, 3, 4, 5];

// ... 语法在数组解构赋值中叫做 RestElement
// 剩余元素!! 

// 1. 剩余元素只能有一个!
// 2. 剩余元素只能是最后一个元素

let [num1, ...num2] = arr;

console.log(num2);
// 输出结果:[ 2, 3, 4, 5 ]

 

 

5箭头函数

    箭头函数的写法   var f = (参数列表)=>{ 函数体 }
    
    箭头函数的简写形式
    01 如果箭头函数的参数列表中只有一个参数, 小括号()可以省略
    02 如果箭头函数的函数体只有一句代码,那么大括号{}可以省略
    03 如果箭头函数的函数体只有一句代码,并且这句代码是返回语句,那么return和大括号都可以省略

    平时确定一个函数中的this是谁,我们需要通过调用模式来确定
    1. 函数调用模式 this ---> window 函数名()
    2. 方法调用模式 this ---> 调用方法的对象 对象.方法名()
    3. 构造函数调用模式 this ---> 创建出来的实例 new 函数名()
    4. 上下文调用模式 this ---> call和apply的第一个参数 函数名.call()

    箭头函数中没有this(因为箭头函数中没有this,所以要是在箭头函数中使用this,this会向上一级作用域中进行查找this)
    如果在箭头函数中使用this, 会向上一级作用域中进行查找this(也就是说箭头函数内外this一致)
// 本题要点 : 在浏览器中,函数中的this默认指向window;  在node.js中 函数的this默认指向一个空对象
var name="sb"  //window中的name
let obj = {
    name: "周浩",//对象中的name
    sayHello() {
            setTimeout(function(){
                  console.log(‘它叫‘+ this.name);//函数中的this,在浏览器中指向window,在node中指向空对象
            },1000)
    }
}
obj.sayHello();
//结果 : 在浏览器中,console.log 输出的是 它叫 sb  。 在node中输出的结果是 它叫undefined

 

 

 

    

关于ES6的新特性

原文:https://www.cnblogs.com/javascript9527/p/11354175.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!