代码之家  ›  专栏  ›  技术社区  ›  Daniel Krom

节点JS[]。forEach未定义

  •  5
  • Daniel Krom  · 技术社区  · 10 年前

    我有个奇怪的问题 [].forEach 在NodeJS中。

    (使用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(函数(v){

    TypeError:无法读取未定义的属性“forEach”

    如果我将代码改为

    var arr = ["is_open","created","deleted","_id"];
    arr.forEach(function(v){
        res[v] = question[v]
    })
    

    我在上测试了相同的功能 Chrome.console 第一种方法有效。
    我知道两者都使用 V8 JS引擎,是一个bug还是Javascript规则中我缺少的东西?

    谢谢

    1 回复  |  直到 10 年前
        1
  •  4
  •   Andy    10 年前

    如果此行后没有分号,代码将中断:

    var res = {}
    

    为了尽量减少这些问题,如果不使用线头,最好使用线头。二者都 JSHint ESLint 可以作为开发插件添加到代码编辑器中(我在SubmlimeText中使用ESLint和Airbnb样式表),也可以使用Gulp或Grunt添加到工作流中,以便在提交代码之前捕获此类错误。

    如果您选择在可能的情况下省略分号,我的建议是,在以其中一个符号开头的任何语句中,或在以算术运算符符号“/”、“+”或“-”之一开头的语句中,将分号紧靠左括号或方括号之前插入- blog entry by Michaeljohn Clement 2010