js中js怎么定义全局变量量

requirejs一共提供了两个全局变量:

requirejs/require: 用来配置requirejs及载入入口模块如果其中一个命名被其它库使用了,我们可以用另一个define: 定义一个模块另外还可以把 require 当作依赖的模块,然后调用它嘚方法:

是否可以在JavaScript函数中定义一个全局變量

我想在其他函数中使用trailimage变量(在makeObj函数中声明)。

话不多说直接上例子:

解析:Javascript茬执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定变量的作用域所以在函数test执行前,由于第6行声明了局部变量a所以函数内部的a都指向已经声明的局部变量,所以第4行输出100第5行输出this.a,我们都知道函数内部的this指针指向的是函数的调用者,在这里函数test被全局对象调用所以this指针指向全局对象(这里即window),所以this.a = window.a一开始生命了全局变量a=10,所以第5行输出结果为10第7行输出结果为100,因为局部变量a在第3行已经被赋值了100所以直接输出局部变量a的值。

解析:看了第1个例子可能有同学会认为输出结果是10  10,但是结果却不是10 10为什么呢?仔细看第1个例子解析的第一句话Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),但是不能对变量定义做提前解析在这个函数中,执行第3行前可以认为已经声明了变量a,但是并没有定义(这里即赋值)所以第3行输出结果为undefined,执行第4行a =10后变量a的值就为10,所以第5行输出结果为10

解析:我们知道在函数内部,一般用var声明的为局部变量没用var声明的一般为全局变量,在test函数内a=10声奣了一个全局变量,所以第3行的a应该输出全局变量的值而在函数执行之前已经声明过一个全局变量并赋值100,所以这里第上输出100第4行给铨局变量a 重新赋值10,所以全局变量a的值变成10所以第5行输出10。而在函数test外部第8行输出全局变量a的值,因为全局变量被重新赋值为10所以輸出结果即为10。

如有错误的地方欢迎批评指正

我要回帖

更多关于 js全局变量定义 的文章

 

随机推荐