javascript函数和逻辑运算

时间:2015-06-01 17:04:56

标签: javascript function

为什么这一行:

true &&  function() {console.log("aaa");}()

打印

  

AAA       未定义

但 这一行:

true ||  function() {console.log("aaa")}()

打印

  

我很好奇发生了什么事? 为什么函数执行了?

5 个答案:

答案 0 :(得分:2)

输入true && false,结果将为false。这意味着它正在检查条件并打印第二个条件。

输入true || false,结果将为true。这意味着只要第一个条件评估为真,它就不会检查第二个条件并打印第一个条件。

这解释了打印的内容。

您的第一个案例:
当你输入true && function() {console.log("aaa");}()时,它也正在评估第二个条件,并且因为你的第二个条件是一个可调用函数[你最后使用() ],其结果即“ aaa“印刷。
最后不要使用(),即输入true && function() {console.log("aaa");},结果将是您的第二个条件function () {console.log("aaa");}

你的第二个案例:
当您输入true || function() {console.log("aaa")}()时,您的第一个条件本身变为真,因此不评估第二个条件,因此仅打印为真。

答案 1 :(得分:1)

第一个是评估两个条件,因为第二个参数(匿名函数)是......匿名的未定义。 ||运算符只是在他的第一个参数(true)上求值为true,因此它只打印true

答案 2 :(得分:1)

这是因为&&运算符是逻辑连词(and)。对于语句,两个操作数都需要truetrue

同时||是逻辑分离(or)。即使只有一个操作数为true,它也会是true

当逻辑disjunciton(or)发现第一个操作数为true时,不需要再查看它,它只能返回true。

答案 3 :(得分:1)

而&&逻辑运算检查两个表达式以评估为真,||操作员只需要一个是真的。所以在第一种情况下,由于第一个表达式的计算结果为true,它会检查另一个表达式(函数),这就是函数运行的原因。在第二种情况下,第一个表达式的计算结果为true,这就是它所需要的所有内容。它停在那里。

答案 4 :(得分:0)

在JavaScript &&||操作中使用short-circuiting。一旦结果完全确定,它就会停止评估,并且不会评估其余部分。

例如,将您的第一个样本更改为:

false &&  function() {console.log("aaa");}()