码迷,mamicode.com
首页 > 其他好文 > 详细

ES6新特性

时间:2018-04-07 20:03:01      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:作用域   OLE   com   ons   声明变量   undefined   分享图片   es6   alt   

1.变量声明let和const

在ES6以前,var关键字声明变量。无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部)。这就是函数变量提升例如:

function aa() {
    if(bool) {
        var test = ‘hello man‘
    } else {
        console.log(test)
    }
  }

以上代码实际为:

var bool=true;
function aa() {
    var test // 变量提升
    if(bool) {
        test = ‘hello man‘;

console.log(test)
    } else {
        //此处访问test 值为undefined
        console.log(test)
    }
    console.log(test)//此处访问test 值为‘hello man
  }
aa();

ES6中:

const:常量;

let:变量;

const PI2= 3.1415926
    PI2 = 201452789 //再次赋值此时会报错
//常量则不能更改
const callbacks=[];
for(var i=0;i<=2;i++){
     callbacks[i]=function(){
        return  i*2;
  }
}
console.table([
      callbacks[0](),
      callbacks[1](),
      callbacks[2](),
])

 

运行结果“
技术分享图片

const callbacks2=[];
//只有let这一处不一样!!!!
for(let i=0;i<=2;i++){    
     callbacks2[i]=function(){
        return  i*2;
  }
}
console.table([
      callbacks2[0](),
      callbacks2[1](),
      callbacks2[2](),
])

代码结果:

技术分享图片

因为let和const都是块级作用域。let的作用域是在它所在当前代码块,但不会被提升到当前函数的最顶部。

2.ES5中块作用域:立即执行函数:        ( (function(){})  ());

(  (function(){
         function f2(){
        return 1;
       }
     console.log(f2()===1);    //true
}) () );
(  (function(){
         function f2(){
        return 2;
       }
     console.log(f2()===2);    //true
}) () )

 

ES6中块作用域:{}

{
   function f2(){
         return 1;
   }
console.log(f2()===1);    //true
}

{
   function f2(){
         return 2;
   }
console.log(f2()===2);    //true
}

3.箭头函数

ES5 function a(){}

{
   const evens=[1,3,5,7];
   const odds=evens.map( function(v){
       return v+1;
   })
   console.log(evens,odds);
//(4) [1, 3, 5, 7] (4) [2, 4, 6, 8]
}

ES6 ()=>{}       //只有一个参数时,小括号可以省略;{}中的表达式直接作为返回值时,{}也可以省略

{
   const evens=[1,3,5,7];
   const odds=evens.map(v=>v+1);
   console.log(evens,odds);
//(4) [1, 3, 5, 7] (4) [2, 4, 6, 8]
}

 

ES6中this没有形成自己的作用域,this指向离它最近的作用域块

 

ES6新特性

标签:作用域   OLE   com   ons   声明变量   undefined   分享图片   es6   alt   

原文地址:https://www.cnblogs.com/sunmarvell/p/8734177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!