它更容易在在的話,那麼給出的以下情形的代碼解釋:更好地檢查未定義的屬性或設置爲空?
// one
var myClass = function(a, b)
{
if(a) this.a = a;
if(b) this.b = b;
}
// two
var myClass = function(a, b)
{
this.a = a || null;
this.b = b || null;
}
,說你有這個方法被調用不斷(許多次/秒)
myClass.prototype.doSomething = function()
{
if(this.a) // do something
if(this.b) // so something else
};
在第一如果你檢查一個未定義的財產,而在第二個現有的財產,但價值null
。
哪種情況在JavaScript中表現更好?
如果您真的想知道表現數字,那麼您應該你自己的jsperf(大約需要3分鐘),並運行在你認爲重要的任何瀏覽器中。回答性能問題的唯一方法是在您認爲相關的瀏覽器中進行測試。 – jfriend00 2011-12-19 20:43:11
請記住,如果構造函數中a或b的期望值和合法值是像(0,「」,false等...)這樣的錯誤值,那麼這兩種方法(一種和兩種)都不起作用。爲了允許這些值,你必須在undefined參數中明確地測試a和b。 – jfriend00 2011-12-19 21:29:04