0

我看到了一些这样的变量:

var comparison = <condition> || /* It could be "&&" too */ <condition>;

我不知道它是什么,它可以做什么?太感谢你了!

4

3 回答 3

3

它主要用于将函数参数初始化为某个默认值。

function foo(arg1,arg2)
{
    arg1 = arg1 || 'Default for arg1';
    arg2 = arg2 || 'Default for arg2';
}

这段代码的作用,实际上和下面的一样:

if (!(arg1))
{//if arg1 is falsy
    arg1 = 'Default for arg1';//assign
}

就目前&&而言,这几乎是相同的故事:

function foo(arg1,arg2)
{
    var areBothArgsTrue  = arg1 && arg2;//sets true is both args were truthy, else assigns false
    arg1 = arg1 || 'Default for arg1';
    arg2 = arg2 || 'Default for arg2';
}
于 2012-09-30T15:55:59.137 回答
2

它们被称为逻辑运算符(MDN):

expr1 && expr2: 如果可以转换为 false,则返回 expr1;否则,返回 expr2。因此,当与布尔值一起使用时,如果两个操作数都为真,则 && 返回真;否则,返回 false。

expr1 || expr2:如果可以转换为true则返回expr1;否则,返回 expr2。因此,当与布尔值一起使用时,|| 如果任一操作数为真,则返回真;如果两者都为假,则返回假。

于 2012-09-30T15:56:36.337 回答
1

代码将评估这两个条件并返回一个布尔值。

var comparison = 2 > 1 && 3 < 1;

在这种情况下,comparison将设置为false

&&true仅当两个条件都为真时||才会返回,而true如果至少有一个条件为真则返回true

于 2012-09-30T15:54:56.980 回答