Javascript逻辑语法

时间:2014-01-17 13:08:37

标签: javascript

我的任务是创建一个名为MrFreeze的对象/类,并将此对象标记为已冻结,以便不能对其进行任何其他更改。 我提出了以下有效的解决方案:

Object.freeze(MrFreeze);

但是当我查看http://www.codewars.com上提供的解决方案时,我遇到了这段代码:

(Object.freeze || object)(MrFreeze);

我无法理解这行代码。请解释为什么在使用OR对象操作符时这是有效的。

1 个答案:

答案 0 :(得分:1)

似乎是对我的后退。

当Object.freeze确实存在时,它执行:

Object.freeze(MrFreeze);

当Object.freeze不存在时,它执行:

object(MrFreeze);

这也可以写成(更详细的澄清):

function freeze(MrFreeze, object) {
    if (Object.freeze) {
        Object.freeze(MrFreeze);
    }
    else {
        object(MrFreeze);
    }
}