假设x是一个对象...有没有这样做的任何好处:显式typeof ==“未定义”检查vs只是检查其存在?
if (typeof x.foo != "undefined")
与做
if (x.foo)
?
这个问题上来,因为我正在读这篇博客文章: http://www.nczonline.net/blog/2010/03/09/custom-events-in-javascript/
在他的榜样,他的作用:
function EventTarget(){
this._listeners = {};
}
EventTarget.prototype = {
constructor: EventTarget,
addListener: function(type, listener){
if (typeof this._listeners[type] == "undefined"){
this._listeners[type] = [];
}
this._listeners[type].push(listener);
在这种情况下this._listeners【类型】绝不会只是什么一个array--所以是不正确的,这将是清洁在这种情况下只是做
addListener: function(type, listener){
if (!this._listeners[type]){
this._listeners[type] = [];
}
this._listeners[type].push(listener);
?
此外,作为一个侧面的问题,我不知道为什么他在做:
EventTarget.prototype = {
constructor: EventTarget
不是默认的构造已设置为事件目标(“本”),当你调用新的EventTarget() ?
还有第三种选择:'如果(x.foo ==未定义!)'。注意* double = *(没有类型强制的平等) – 2011-05-09 19:45:39
@Dan:虽然如果一些傻瓜改变'未定义',那会中断。是的,这是可能的。 – delnan 2011-05-09 19:50:46
@delnan真的,但有些方法可以防范:'(function(undefined){... undefined在这里真的没有定义...}())' – 2011-05-09 19:53:14