0

如果我想给一个变量一个它很有可能已经拥有的值,我应该检查它是否存在并避免不必要的覆盖,还是应该这样做并避免检查?因此(在此处使用 JavaScript),哪个选项对处理器的工作量较小:

foo = "foo"; //foo might already be set to "foo"

或者

if(foo != "foo") {
    foo = "foo";
}

这里需要注意两点:首先,虽然我目前正在使用 JavaScript,但如果它们不同,我会对其他语言的答案感兴趣;其次,我很可能会使用比“foo”长得多的字符串。

4

2 回答 2

2

简单的分配总是比条件检查成本更低。话虽这么说,这是如此微小,以至于它真的无关紧要。

在一些更复杂的情况下,比如如果你只想分配一些东西,foo如果它还没有值,你可以使用逻辑或 ( ||) 来做到这一点:

var foo;
// ... some code that may initialize foo ...
foo = foo || 'someDefault';

foo请注意,如果它有任何“假”值,这也将默认为: 0、空字符串、NaNnullundefinedfalse。如果这些值是可以接受的,那么您希望使用typeof第三条语句来代替:

var foo;
// ... some code that may initialize foo ...
foo = typeof foo === 'undefined' ? 'someDefault' || foo;
于 2013-01-28T20:11:54.143 回答
0

可以将变量设置为可能已经设置的值。

foo = "foo";
于 2013-01-28T20:42:45.557 回答