我遇到过两种不同的方法来定义/命名JavaScript中的对象和函数,在使用它之前首先检查名称是否存在。问题是,我不知道哪一个更好(从速度和可用性的角度来看),并且不可能在谷歌搜索中使用布尔运算符来解决它。
我经常看到的第一个:
var myNewObject = myNewObject ? myNewObject : function () {
// Code goes here.
};
第二个看起来更简洁,但我只看到一两个地方,所以我不知道它是否有标准甚至名称:
var myNewObject = myNewObject || function() {
// Code goes here.
};
从功能上讲,它们都做同样的事情,它们似乎都适用于我可以测试的每个浏览器。我的问题是 - 这更好,为什么?此外,虽然第一个定义基本上是单行条件......第二个定义是什么?
答案 0 :(得分:5)
我会使用第二个例子,它描述为(Minimum Eval)。它更简单,更具可读性。
就像在多个浏览器中从onClick方法获取事件一样。
element.onclick = function (evt) {
evt = evt || window.event
}
答案 1 :(得分:5)
答案 2 :(得分:2)
后者,当以这种方式使用时,它与c#??
中的null coalesce运算符类似
答案 3 :(得分:1)
FWIW我更经常地看到第二种方法,而且(就我而言)我觉得它更清晰,更简洁,更具惯用性。
答案 4 :(得分:0)
两种方法都有效。 但我认为最优化的版本是简单地使用正常的if测试,如:
if(!myNewObject)
myNewObject = ...
在您的答案中建议的任何一种方法中,每次定义函数/对象时,可能会涉及不必要的重新分配。我的意思是如果已经定义了myNewObject,则JavaScript运行时必须执行不必要的重新分配myNewObject = myNewObject
(除非运行时没有优化它)。
在Mozilla网站上,他们建议使用简单的if view this。