JavaScript对象定义条件 - 哪个更好?

EAM*_*ann 7 javascript object

我在JavaScript中定义/命名对象和函数有两种不同的方法,在使用之前首先检查名称的存在.问题是,我不知道哪一个更好(从速度和可用性的角度来看),并且不可能在谷歌搜索中使用布尔运算符来弄清楚它.

我经常看到的第一个:

var myNewObject = myNewObject ? myNewObject : function () {
    // Code goes here.
};
Run Code Online (Sandbox Code Playgroud)

第二个看起来更简洁,但我只看到一两个地方,所以我不知道它是否有标准甚至名称:

var myNewObject = myNewObject || function() {
    // Code goes here.
};
Run Code Online (Sandbox Code Playgroud)

从功能上讲,它们都做同样的事情,它们似乎都适用于我可以测试的每个浏览器.我的问题是 - 这更好,为什么?此外,虽然第一个定义基本上是一个单行条件......第二个定义是什么?

Joh*_*ock 5

我会使用第二个例子,它描述为(最小Eval).它更简单,似乎更具可读性.

这就像在多个浏览器中从onClick方法获取事件一样.

element.onclick = function (evt) {
  evt = evt || window.event
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 5

我会选择后者,只是因为你输入myNewObject两次而不是三次.

此外,虽然第一个定义基本上是一个单行条件......第二个定义是什么?

短路评估

  • 接受这个作为答案,因为你也给了我第二种方法的名称.如果我知道它被称为什么,它本可以节省很多时间......我不知道这是一种合法的方法,只是它似乎有效. (2认同)