用代码更容易用语言解释,因此考虑以下情况:
// 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中效果更好?
解决方法:
我不确定是否以最佳方式设置测试,但是此站点非常适合进行基准测试:
http://jsperf.com/or-pipe-versus-if
我使用IF语句而不是使用OR运算符设置默认值的结果显示效果要好6%