ES6的常量、作用域、箭头函数简单介绍

1、常量

    定义一个常量(不变化的量)

    ES5 常量定义一个常量

Object.defineProperty(window,"PI",{

    value : 3.1415926,

    writable : false,

})

    ES6 常量定义一个常量

const PI = 3.1415926 ;

    假若代码中有很多地方需要声明常量,通过ES6的方式实现还是比较方便的。

2、作用域

        变量的作用域无非就是两种:全局变量和局部变量。 

            全局作用域: 最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的

            局部作用域: 和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,而对于函数外部是无法访问的,最常见的例如函数内部

ES6的常量、作用域、箭头函数简单介绍_第1张图片
ES5-作用域
ES5-作用域输出结果

 原因:var 定义的变量 i 在for 循环中存在变量的提升 而且循环内是一个闭包函数(最后执行)闭包内并没有声明内部的 i 变量,因此 i 变量从for 循环内声明的全局变量中取得,从全局变量中取得时的 i 是最终计算量。循环结束后 i = 3 执行闭包函数输出都是6

在ES6 新增一个定义变量声明 let  块级作用域   声明的变量每次变化时,会新增不同的作用域块,分开执行代码

ES6的常量、作用域、箭头函数简单介绍_第2张图片
ES6-作用域
ES6-作用域输出结果

使用let声明变量,变量发生变化时,会新增不同的作用域,再通过不同作用域执行闭包函数,输出不同的值。

3、箭头函数 =>

        var fun = function(){ ... }

        箭头函数:  () => { 函数体 }

               (参数) => { 函数体 }   如果参数只有一个  小括号可以省略

        例如: var fun = (a) => { return a+2; }

              函数调用: fun(20);

这样写的好处

1、在写法上更加方便,省去了书写function,比较简单

2、会改变箭头函数内部this的指向,指向的是定义时绑定的this指向(就是this是继承自父执行上下文)

你可能感兴趣的:(ES6的常量、作用域、箭头函数简单介绍)