gpt4 book ai didi

javascript - 如何: operator works in Javascript

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:45:14 25 4
gpt4 key购买 nike

为什么下一段代码没有出现错误?

var bar = 1,
foo = {};

foo: {
bar: 2;
baz: ++bar;
};

返回2

众所周知,javascript 有标签,它有助于管理循环和 if 语句。这段代码有用吗?我看到带有 :: 运算符的 AngularJS 框架提供一次性绑定(bind)。也许你听说过另一个使用那个奇怪的运算符的例子。

最佳答案

这不是错误,因为 foo: {...} 中的 foostatement label .它与您的 foo 变量无关,也与将任何东西分配给任何东西无关。

同样,{} 定义了一个 block ,而不是一个对象,而 barbaz里面还有语句标签。

声明

2;

++bar;

完全有效。第一个看起来有点奇怪,但它是有效的;在 JavaScript 中,任何表达式 can be used as a statement ,包括一个简单的常量。 (这很有用;这就是 JavaScript 在 “use strict” 指令中的隐藏方式。)

结果是 2 因为 block takes the value of the last statement in the block ,即 ++bar;

除非某些东西正在使用这些语句标签,否则该代码等同于:

var bar = 1,
foo = {};

2;
++bar;

Could this code be useful?

纯粹是给定的,我不知道如何,不。但是请注意,如果您在 foo block 中有一个循环,并且在循环之后有一些东西,您可以使用定向中断跳过循环之后的东西:

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");
<!-- 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>

除了 Math.random() 返回的值小于 0.3 的异常情况外,您不会看到 Probably don't get here 连续十次。

不过,您需要一个循环或一个开关才能做到这一点; break is only valid in loops and switch .这将是一件非常不寻常的事情...

关于javascript - 如何: operator works in Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29742909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com