【问题标题】:Alignment issues in JavascriptJavascript 中的对齐问题
【发布时间】:2018-05-17 03:48:17
【问题描述】:

我正在尝试一些简单的 javascript,如果您问我,我发现的结果非常惊人,我想知道为什么 javascript 会这样。 所以我有一个简单的内联函数,它定义了两个内部函数:task 1 和 task2,并且有一个返回对象,它有两个属性:job1 和 job2,其中 job1 指向 task1,job2 指向 task2。我收到如下错误:

Uncaught SyntaxError: Unexpected token :

而令人惊奇的是,如果我在 return 语句之后立即移动大括号(请参阅代码中的注释),脚本实际上可以正常工作并按预期提示警报“1”。为什么我在 return 后立即放置花括号或在下一行放置花括号?

<!DOCTYPE html>
<html>

  <head>
    <script data-require="angular.js@*" data-semver="4.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.17/angular2.min.js"></script>

  </head>

  <body>
    <h1>Hello!</h1>
  </body>

</html>
<script type="text/javascript">

var x = function()
{
    var task1 = function() { alert("1"); }
    var task2 = function() { alert("2"); }

    return 
    { ///////////// move this on the previous line right after return
        job1: task1,
        job2: task2
    };
}

x().job1();

</script>

我一直认为在 javascript 中是这样的:

var x = function() {
//content
}

等价于:

var x = function() 
{
//content
}

但显然不是我首先提到的情况。为什么?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

为什么我在 return 之后立即放置花括号或在下一行放置花括号?

因为分号在 javascript 中是可选的。解析器做了一些“魔术”来确定语句的结尾在哪里,并将return&lt;newline&gt; 视为return; 的等价物。

【讨论】:

    猜你喜欢
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2012-11-06
    • 2011-05-16
    相关资源
    最近更新 更多