我在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""创建""删除"" _id&#34]。的forEach(函数(V){
TypeError:无法读取属性' forEach'未定义的
如果我将代码更改为
,则有效var arr = ["is_open","created","deleted","_id"];
arr.forEach(function(v){
res[v] = question[v]
})
我在Chrome.console
上测试了相同的功能,并且第一种方式正常工作。
我知道两者都使用V8
JS引擎,这是一个bug还是其他什么我是&#39 ; m缺少Javascript规则?
谢谢!
答案 0 :(得分:3)
如果您在此行之后没有分号,则代码会中断:
var res = {}
为了最大限度地减少这些问题,如果你没有使用它,最好使用一个linter。 JSHint
和ESLint
都可以作为开发插件添加到您的代码编辑器中(我将ESLint与SubmlimeText中的Airbnb样式表一起使用),也可以使用Gulp或Grunt添加到您的工作流程中以捕获这些类型在提交代码之前的错误。
如果您选择在可能的情况下省略分号,我的建议是在任何以其中一个标记开头的语句中的前括号或方括号之前插入它们,或以任何以算术运算符标记之一开头的任何语句中插入它们/ “,”+“或” - “如果你碰巧写下这样的陈述。 - blog entry by Michaeljohn Clement 2010