全局函数表达式如何访问包含 JavaScript 函数的变量
how can global function expression can access variable inside containing function in javascript
下面是一个例子:
function outerFunc(){
//some variable
var x = 10;
Obj = function(){ //Its global function created without var keyword
this.a = x;
}
}
所以现在当我在调用outerFunc
函数后创建Obj
对象的新实例时。
outerFunc();
myObj = new Obj();
myObj.a; //prints 10
所以我想知道它如何读取包含函数的私有变量x
当我将Obj
定义为全局构造函数时,它仍然可以读取值。
您无法从外部访问闭包中声明的属性x
。
在这里,您不会读取私有变量x
的值,而是读取您制作并存储的副本 a
.
如果你的问题是为什么你可以从函数内部访问x
Obj
:这就是闭包的工作原理:函数可以访问声明它的范围的变量。这个函数被分配给Obj
变量并且这个变量是全局变量的事实绝对不会改变任何东西。
以下是一些额外的阅读:闭包的MDN
相关文章:
- 此行是否包含函数声明
- 在Debian中运行包含load()和print()函数的JS脚本
- 在包含tx.executeSql的每个函数之后显示警报
- 不执行包含的页面的Javascript onload函数
- 从我自己的脚本中包含的Javascript文件中调用一个函数
- javascript函数包含两个元素和web音频api
- 是否可以将我网站上的普通javascript和css函数包含到我的angularjs应用程序中
- 如何将服务注入链接函数包含指令
- JavaScript 函数包含可以相互访问的对象
- Rethinkdb谓词函数“包含”多个值不起作用
- 将参数传递给javascript函数,该函数包含一个'-'
- 协助javascript函数包含在循环(PHP)中
- 我如何改进这个toggleClass函数包含基本重复的逻辑
- 如果 JS 函数包含在 HTML 中,我如何在浏览器控制台中全部使用 JS 函数
- 为什么javascript's . touppercase函数包含数字?
- Jquery不返回通过PHP require()函数包含的元素
- 在对象中找不到函数包含
- 传递javascript动态参数的函数包含在字符串中
- Jquery函数包含外部变量,但不能读取
- 如何将匿名函数包含到RequireJS依赖项中