如果我想给一个变量一个它很有可能已经拥有的值,我应该检查它是否这样做并避免不必要的覆盖,还是应该这样做并避免检查?所以(这里使用 JavaScript),哪个选项对处理器来说工作量更少:
foo = "foo"; //foo might already be set to "foo"
or
if(foo != "foo") {
foo = "foo";
}
这里需要注意两件事:首先,虽然我目前正在使用 JavaScript,但如果其他语言有所不同,我会对它们的答案感兴趣;其次,我很可能会使用比“foo”长得多的字符串。
简单的分配总是比条件检查的成本要低。话虽如此,这实在是太微观了,根本不重要。
如果情况有点复杂,例如您只想将某些内容分配给foo
如果它还没有值,您可以使用逻辑或 (||
) 要做到这一点:
var foo;
// ... some code that may initialize foo ...
foo = foo || 'someDefault';
请注意,这也会默认foo
如果它有任何“错误”值:0
, 空字符串,NaN
, null
, undefined
, or false
。如果这些值可以接受,那么您需要使用typeof
用第三级语句代替:
var foo;
// ... some code that may initialize foo ...
foo = typeof foo === 'undefined' ? 'someDefault' || foo;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)