模式返回var&& var ===' something'在javascript中

时间:2015-10-22 16:54:15

标签: javascript return

在一个函数中,我看到了return myVar && anotherVar === 'error';

此语句是否返回true / false取决于&&和在评估两个条件后,语句评估为真还是假?所以,如果我们说a和b都是真的,那么返回的结果应该是真的,对吗?我是这么认为的,但是当我在Chrome控制台中测试时,当我Uncaught SyntaxError: Illegal return statement然后var a = 'abc', b = '123';

时,我收到错误return a && b;

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

不一定评估这两个条件。 javascript中的逻辑运算符使用称为short-circuit evaluation的东西,以便系统只运行第一个条件,如果它可以仅根据第一个条件确定结果。代码等同于:

if (myVar)
{
    //if the first condition fails we never enter the block
    // and never check this condition
    if (anotherVar === 'error')
    {
       return true;
    }  
}
return false;

这是一种常见的模式,一旦您看过几次就很容易理解,因此,使用您遇到的问题的简短形式而不是写出从这个答案中弄得一团糟。

对于您的测试,不只是致电return,而只是debug.printdebug.log结果。

答案 1 :(得分:2)

您收到该错误是因为您未在函数内使用let data: Vec<String> = string.split('\n').map(String::from).collect(); ,请在任何控制台中尝试以下操作:

.featured-series {
    width:606px;
    height:406px;
    display:inline-block;
    float:left;
    margin:3px 3px 3px 3px;
    background-color:black;
}

根据return问题,这是一个逻辑AND运算符,如果在这种情况下第一个(function foo() { var a = "abc", b = "123"; return a && b; }; foo(); )是&&,则第二个不会被评估。