如果我想给一个变量一个它已经有很大机会的值,我应该检查它是否存在并避免不必要的覆盖,或者我应该这样做并避免检查?所以(在这里使用JavaScript),哪个选项对处理器的工作量较少:
foo = "foo"; //foo might already be set to "foo"
或
if(foo != "foo") {
foo = "foo";
}
这里有两点需要注意:首先,当我正在使用JavaScript时,如果它们不同,我会对其他语言的答案感兴趣;第二,我很可能会使用比“foo”长很多的字符串。
答案 0 :(得分:2)
简单分配总是比条件检查更便宜。话虽如此,这是微观的,它确实无关紧要。
如果某些内容稍微复杂一些,如果您只想将某些内容分配给foo
,如果它还没有值,您可以使用逻辑或(||
)来那样做:
var foo;
// ... some code that may initialize foo ...
foo = foo || 'someDefault';
请注意,如果它有任何“假名”值,我们也会默认foo
:0
,空字符串,NaN
,null
,undefined
,或false
。如果这些值是可接受的,那么您希望将typeof
替换为第三级语句:
var foo;
// ... some code that may initialize foo ...
foo = typeof foo === 'undefined' ? 'someDefault' || foo;
答案 1 :(得分:0)
可以将变量设置为可能已设置的值。
foo = "foo";