我正在尝试一些简单的 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/