代码之家  ›  专栏  ›  技术社区  ›  OscarRyz

我听说过javascript插入“;”自动插入,这可能会导致问题[重复]

  •  0
  • OscarRyz  · 技术社区  · 14 年前

    我也听说过Go插入它们,但它们遵循的是不同的 approach

    在解释时,javascript如何插入分号?

    3 回复  |  直到 5 年前
        1
  •  12
  •   CaffGeek    14 年前

    我发现的最大的一件事是,假设您有一个返回坐标(或任何真正的对象)的函数,类似于这个。

    function getCoordinates() {
        return
            {
                x: 10,
                y: 10
            };
    }
    

    你想取回一个物体,对吗?错了!你回来时没有定义。解释器将代码转换为

    function getCoordinates() {
        return;
            {
                x: 10,
                y: 10
            };
    }
    

    自从 return 它本身就是一个有效的语句。您需要确保按以下方式填写申报表

    function getCoordinates() {
        return {
                x: 10,
                y: 10
            };
    }
    
        2
  •  4
  •   Guffa    14 年前

    如果可能的话,javascript会在任何换行符处假定语句结束。例如:

    return
    true;
    

    解释为:

    return;
    true;
    

    将返回和它的参数转换为两个单独的语句,这当然意味着函数没有返回值(返回未定义的)。

    我写了一篇 blog entry 不久前的事。

        3
  •  2
  •   Pekka 웃    7 年前

    教我这个特殊功能的陷阱的例子是 this one 在“最奇怪的语言特征?”问题。(这就是为什么我要重新打开这个问题的原因,顺便说一下,它是一个宝贵的学习资源。)

    这里有很好的参考资料: What are the rules for Javascript's automatic semicolon insertion?