var something = something ||是否有任何陷阱? {}

时间:2011-11-17 21:30:37

标签: javascript syntax

我遇到了this answer,海报上提到了

的简写
if(typeof MyNamespace === 'undefined'){
    var MyNamespace = {};
}

var MyNamespace = MyNamespace || {};

经验丰富的程序员是否会建议后者简化代码,或者是否过于复杂化,比如在复杂的复合语句中滥用++--


编辑我问的原因是b / c一段时间后,有人鼓励我指出很多认为自己是专业程序员的人会让很多初学者犯错误。那个案子是

if (isReady){
  //Do Something
}

他所说的是一个条件应该意味着什么,isReady并不意味着什么,相反,我们应该使用

if (isReady === true){
  //Do Something
}

2 个答案:

答案 0 :(得分:4)

从风格上讲,如果您定义的是命名空间对象,那么它会很好并且安全,但在更广泛地使用它之前要小心。

如果值未定义,它不仅会覆盖该值,还会覆盖false0NaNnull""

在一些较旧的错误浏览器中,如果该变量声明位于不同的<script>元素中,它会破坏旧的变量声明,无论它是否是真正的值。对不起,我不记得我的头脑。

答案 1 :(得分:2)

var MyNamespace = MyNamespace || {};

很好。这真是一种风格选择。我更喜欢||

通常MyNamespace会抛出引用错误,因为它不存在,但它在var语句中有效。