在Javascript中(当使用node.js时),你如何知道/定义变量的作用域?
In Javascript (when using node.js), how do you know/define the scope of variables?
如果我在传递的函数中定义了一些东西,例如
var name = "Whatever";
现在是否可以从应用程序的其他部分访问,还是受到限制?在node.js中定义作用域的逻辑是什么?
name
变量只在创建它的函数中可用,或者在该函数内嵌套的函数中可用。
无论函数传递到哪里,这都是正确的。它的原始变量环境随身携带,任何代码以外的环境将无法访问name
。
在方法中定义的任何变量仅在该方法中可用,如果您使用var
。如果你这样做
myVar = 1;
myVar将是全局的
Node和其他javascript一样。Node确实定义了一个global
变量,因此您可以执行以下操作:
global.SOME_CONSTANT = 'A Constant'
然后像
一样使用 SOME_CONSTANT
在你的代码/模块的任何地方。
因为node是异步的,所以最终需要定义很多回调。也就是说,你做了很多
someModule.someMethod(opts, function(data){
// callback code in here
});
,您传入的函数在完成时被someMethod
调用。假设您在函数中调用了someModule.someMethod
。如果您在外部函数中定义了一个变量,那么您的代码看起来像
var x = [];
someModule.someMethod(opts, function(data){
// x is available in this callback because of closures, so you can do
x.push(data);
});
由于闭包的关系,在外部作用域中定义的变量在回调中可用。我建议你花点时间阅读javascript中的闭包。
它只在模块中可用,并且只在定义它的函数中可用。没有办法定义范围。每个模块都有自己的全局作用域。
你应该阅读闭包;)
相关文章:
- 如何为javascript创建自定义标签?或者这是我不知道的其他事情吗;我不知道
- 客户端 JavaScript 没有定义 - 但它在 HTML 源代码中.任何人都知道为什么
- 我想知道如何创建一个自定义对话框,当点击按钮时会弹出
- 当<表单>中定义了多个<输入>时,如何知道提交了哪个输入
- 函数没有定义,不知道为什么
- 是否有可能知道用户何时点击YouTube视频上的广告
- 如果被调用方被定义为变量,JavaScript 函数能否知道调用它的内容
- 自定义指令如何知道它是否已单击另一个控件
- 现在我有错误“;ReferenceError:项未定义“;不知道如何测试我的dataService
- Javascript数组未定义..并且I'I’我不知道为什么
- 获得'未定义',可以'我不知道为什么
- 为什么Visual Studio 2013不知道我定义的属性的定义
- 我们如何知道在过滤器模型更改后,自定义过滤器何时完成ng重复
- 有人知道一个叫jcf javascript自定义表单的插件吗?我找不到回购,网站或一些有关它的信息
- 获取“未定义无参数构造函数”;错误,不知道为什么
- 在不知道容器高度的情况下自定义Firefox和IE中的滚动条
- 我不知道为什么会收到提醒!& # 39;未定义# 39;消息
- 如何知道脚本文件定义了哪些变量和函数
- 在Javascript中(当使用node.js时),你如何知道/定义变量的作用域?
- 自定义Tweet给出“32:无法验证您的身份”.错误.知道为什么吗?