具有变量和函数定义的逻辑OR作为操作数

时间:2016-09-29 12:27:22

标签: javascript

当我阅读由第三方开发者创建的自定义库时,我看到了这一行。这在Javascript中有什么作用?它是否在"修饰符"上执行逻辑OR。和函数的返回值?

modifier = modifier || function(x){return x; };

4 个答案:

答案 0 :(得分:1)

如果modifier具有truthy值,则返回function,如https://blogs.technet.microsoft.com/markrenoden/2016/07/26/deploying-a-dc-to-azure-iaas-with-arm-and-dsc/ 。否则它会在不调用它的情况下返回一个函数。

答案 1 :(得分:1)

是。在JavaScript中,||如果它是真值则返回左边,如果左边是假值,则返回右边。

实际上,如果修饰符已经是一个函数,它将保持设置状态。如果未定义或为null,则将设置对右侧函数的引用。但是,它不会评估该功能。

如果进行评估,它将会是这样的。

getValue

答案 2 :(得分:1)

||运算符是一个懒惰运算符。如果它具有计算它的值所需的手段,则它不会评估表达式的其余部分。当其中一个参数为true时,逻辑操作OR的值为true,因此如果modifier被认为是true值,它将返回自身,否则返回第二个参数。

要查看JS检查here中的真实情况。

答案 3 :(得分:1)

是。
更详细地说,它检查modifier是否评估为true;在这种情况下,它将modifier值赋给modifier变量(noop);否则它会为modifier分配一个匿名函数。