全局对象
这些对象在所有模块中都可用,且不需要导入。
1、global
在任何地方都可以使用。
(1)在Node.js的交互模式与脚本模式下运行
我们先在命令行里输入node,然后回车,就会进入交互模式。此时我们定义一个变量a,即为在全局对象下定义了一个属性,访问它时可以使用global.a来访问。我们还可以直接创建一个函数fn,此时它就会自动成为全局对象下的一个方法。使用global.fn()就可以访问,当然,也可以直接写a和fn(),这样也可以访问。
所以:在交互模式下,声明的变量和创建函数都属于全局对象下的,可以使用global来访问,如上例的global.a global.fn()。
现在,我们在WebStorm里写入下列代码,然后运行,看一下在脚本模式下,还能不能打印出a和fn的值。
var a = 1;
console.log(a);
console.log(global.a);
function fn(){
return 2;
}
console.log(fn());
console.log(global.fn());
由结果可以知道,此时global.a显示undefined,而global.fn(),会直接报错。
所以,在脚本模式下,声明的变量和创建函数都不属于全局对象下的,不能使用global来访问。
(2)在浏览器中运行
在浏览器下运行时,JS全局对象的名字为window。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var a = 1;
console.log(a);
console.log("全局下:",window.a