2011-03-26 93 views
0

也许以某种方式扩展尝试&捕获或错误处理抛出错误未定义的捕获,只有在调试模式(标志开)?Javascript:控制未定义?

因为它会减少我的代码并提高可读性。

if (typeof foo != 'undefined') { 
/* Do something with foo */ 
} 

而不是立即使用它。

如果有任何解决方案,将未定义的变量连接到一个字符串。

'bar'+ ((typeof foo != 'undefined') ? foo : '') +'bar' 

而不是使用它的时候了

'bar'+ foo +'bar' 

谢谢:)

更新,一些例子:

(function(o){ 
var s = { 
    foo:'' 
} 
$.extend(s,o); 

console.log('testing'+ s.foo +'testing'); 
})(); 

(function(o){ 
console.log('testing'+ o.foo +'testing'); 
})({foo:''}); 

(function(o){ 
console.log('testing'+ (typeof o.foo != 'undefined' ? o.foo : '') +'testing'); 
})(); 

(function(o){ 
console.log('testing'+ o.foo +'testing'); 
})(); 
+4

为什么你会有这么多可能'未定义的变量......函数参数? – alex 2011-03-26 15:06:09

+0

更新了我的文章。 ;) – Somebody 2011-03-26 15:29:15

+0

想象一下,如果有很多未定义的变量被使用。 – Somebody 2011-03-26 15:36:16

回答

0

你举的例子:

(function(o){ 
    var s = { 
     foo:'' 
    } 
    $.extend(s,o); 

    console.log('testing'+ s.foo +'testing'); 
})(); 

是我认为有一个参数的默认值的最佳方式。

除此之外,我不太确定这个问题的要求。 JavaScript无法扩展运算符或关键字的行为,例如try..catch。通过扩展,undefined的默认值也不能改变。你可以做的最好的就是上面的例子。