在javascript中,哪个更好`var Obj = Obj || {}`或`if(Obj ==='undefined'|| typeof Obj!=='object')`

时间:2011-11-01 18:33:53

标签: javascript

我想知道哪种方法更好:

var Obj = Obj || {};

if (Obj === undefined || typeof Obj !== 'object') {
  Obj = {};
}

我被告知第二种方法更好,但我不知道为什么。请你能告诉我每个人的利弊是什么。

非常感谢

2 个答案:

答案 0 :(得分:2)

第二种方法更具体,因此为了创建对象(如果它尚不存在),它会更好。第一种方法仅测试对象是否“真实”,意味着如果Obj是数字5,它仍将返回原始Obj,而在第二种方法中,Obj 必须类型为'object'才能保留其值。

实际上,没有太大区别,因为你很少遇到上述情况;第二种方法只是告诉读者你想要什么,更具体地说。我喜欢第一种方法,因为它更短,但这取决于你想要的具体程度。

答案 1 :(得分:2)

我在第一种方法中看到的唯一问题是,如果有人定义Obj来引用不是对象但也不是假的东西 - 一个非零整数,比如说 - 然后Obj将继续指向那个东西,后来调用Obj假设它是一个对象将失败。但为了简单起见,我仍然更喜欢第一个版本;我尝试命名这样的对象,使得没有人会分配任何不适合该名称的东西。