变量

使用var(ES5)、let(ES6)进行声明的为变量,使用const(ES6)进行声明的为常量。

varletconst

全局变量

global 最根本的作用是作为全局变量的宿主。按照 ECMAScript 的定义,满足以下条件的变量是全局变量:

在最外层定义的变量

var a = 0

全局对象的属性

globel.a = 0

隐式定义的变量(未定义直接赋值的变量)

a = 0

当你定义一个全局变量时,这个变量同时也会成为全局对象的属性,反之亦然。需要注 意的是,在 Node.js 中你不可能在最外层定义变量,因为所有用户代码都是属于当前模块的, 而模块本身不是最外层上下文。

let a = 0
console.log(a) // 0
console.log(global.a) // undefined
global.a = 1
console.log(a) // 0
console.log(global.a) // 1
a = 2
console.log(a) // 2
console.log(global.a) // 1

注意

永远使用 var、let 定义变量以避免引入全局变量,因为全局变量会污染 命名空间,提高代码的耦合风险。

比如

a = 0
console.log(a) // 0
console.log(global.a) // 0

注意

也不要在定义变量之前使用变量。

比如

a = 0
console.log(a) // 0
console.log(global.a) // undefined
var a = 1
console.log(a) // 1
console.log(global.a) // undefined

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress