2011-03-26 96 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的默認值也不能改變。你可以做的最好的就是上面的例子。