javascript - Javascript 中的对齐问题

标签 javascript jquery

我正在尝试一些简单的 javascript,如果你问我,我的发现是相当惊人的,我想知道为什么 javascript 会这样。 因此,我有一个简单的内联函数,它定义了两个内部函数:任务 1 和任务 2,并具有一个具有两个属性的返回对象:job1 和 job2,其中 job1 指向任务 1,作业 2 指向任务 2。我收到如下错误:

Uncaught SyntaxError: Unexpected token :

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

<!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
}

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

最佳答案

Why does it matter if I put the curly brace immediately after return or on the next line?

因为分号在 javascript 中是可选的。解析器做了一些“魔术”来确定语句的结尾在哪里,并看到 return<newline>相当于 return;

关于javascript - Javascript 中的对齐问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47620488/

相关文章:

javascript - 在光标处添加段落或表格等

javascript - JavaScript 中的 anchor 元素

javascript - 使用 PHP 在数据库中存储动态创建元素的 HTML

jquery - Virtual Studio 2008 - ASP.NET - jQuery 1.7.1 VSDoc - JavaScript Intellisense?

javascript - removeClass 和 removeClass 图像不起作用

javascript - 如何在Google map 的可见区域显示半径或圆

javascript - 如何在 React v16.13.1 中使用 React Router v5 和 Hooks 获取位置路径名?

javascript - 如何才能使 map 的大小精确地适合容器?

javascript - 访问选项卡+向其中添加内容

javascript - jQuery Post 无法在 OS X Chrome 中工作