【发布时间】:2016-05-07 11:12:06
【问题描述】:
我在 NodeJS 中遇到了 [].forEach 的奇怪问题。
(使用 NodeJs v5.4.1)
将这段代码放在函数中
function _buildUserQuestionsForDisplay(question,callback){
var res = {}
["is_open","created","deleted","_id"].forEach(function(v){
res[v] = question[v]
})
...
...
}
抛出错误:
["is_open","created","deleted","_id"].forEach(function(v){
TypeError: 无法读取未定义的属性“forEach”
如果我将代码更改为
var arr = ["is_open","created","deleted","_id"];
arr.forEach(function(v){
res[v] = question[v]
})
我在Chrome.console 上测试了相同的功能,第一种方法有效。
我知道两者都使用V8 JS 引擎,这是一个错误还是我在 Javascript 规则中缺少的东西?
谢谢!
【问题讨论】:
-
Node 是否也会因该代码的独立最小版本而失败?您是否正在使用任何可能会更改
Array.prototype或Object.prototype的模块? -
如果你在
var res = {}后面加一个分号,那么它会起作用吗? -
@Andy 你是对的,我觉得有点愚蠢,如果我换行,Javascript 编译器应该原谅这一点,不是吗?
-
@robertklep 好吧,这是事实,添加分号确实解决了它。顺便说一句,使用 VisualStudio for mac(太棒了!),也许那里有 newLine 字符
-
@DanielKrom 我删除了我的评论,因为 Node 在没有分号的情况下确实失败了,这对我来说是相当意外的(并且使我的评论无效=)
标签: javascript node.js v8