为什么下一个代码不会出现错误?
var bar = 1,
foo = {};
foo: {
bar: 2;
baz: ++bar;
};
Run Code Online (Sandbox Code Playgroud)
它回来了 2
它知道javascript有标签,它有助于管理循环和if语句.这段代码可以用吗?我看到带有::运算符的AngularJS框架提供了一次性绑定.也许你听到另一个使用那个奇怪的算子的例子.
这不是错误,因为fooin foo: {...}是一个语句标签.它与你的foo变量无关,它与任何东西都没有任何关系.
类似地,{和}定义一个块,而不是一个对象,并且bar和baz内部也语句标签.
声明
2;
Run Code Online (Sandbox Code Playgroud)
和
++bar;
Run Code Online (Sandbox Code Playgroud)
完全有效.第一个看起来有点奇怪,但它是有效的; 在JavaScript中,任何表达式都可以用作语句,包括一个简单的常量.(这很有用;这是JavaScript在"use strict"指令中滑落的方式.)
除非某些东西使用这些语句标签,否则该代码相当于:
var bar = 1,
foo = {};
2;
++bar;
Run Code Online (Sandbox Code Playgroud)
这段代码可以用吗?
纯粹是给定的,我不知道如何,不.但是请注意,如果你在foo块中有一个循环,并且你在循环之后有了一些东西,你可以使用一个定向中断跳过循环之后的东西:
var bar = 1,
foo = {};
foo: {
bar: 2;
baz: ++bar;
for (var n = 0; n < 10; ++n) {
snippet.log("n = " + n);
if (Math.random() < 0.3) {
break foo;
}
}
snippet.log("Probably don't get here");
};
snippet.log("Done");Run Code Online (Sandbox Code Playgroud)
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>Run Code Online (Sandbox Code Playgroud)
在那里,你不会看到Probably don't get here除了在外围的情况下连续Math.random()返回少于0.3十次的值.
但是,你需要一个循环或者switch为了做到这一点; break仅在循环中有效switch.做一件非常不寻常的事......
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |