ES6之常量、作用域、箭头函数

255 阅读2分钟

常量

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

ES5 常量定义一个常量

Object.defineProperty(window,"PI",{

value : 3.1415926,

writable : false,

})

ES6 常量定义一个常量

const PI = 3.1415926 ;

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

作用域

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

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

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

ES5-作用域

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

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

ES6-作用域

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

箭头函数 =>

    var fun = function(){ ... }

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

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

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

          函数调用: fun(20);

这样写的好处

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

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