【发布时间】: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
}
但显然不是我首先提到的情况。为什么?
【问题讨论】:
-
请在 StackOverflow 论坛上查看 thread :)
标签: javascript jquery