为什么这个函数返回0

时间:2017-08-25 16:35:13

标签: javascript logic ready

我想弄清楚为什么这个javascript函数在AA<-c(2,3,1,4,9) BB<-c(5,13,9,1,2) A1<-c(5) B1<-c(18) data1<-data.frame(AA,BB) data2<-data.frame(A1,B1) library(dplyr) subset(data1, ((sum(AA) ==data2$A1 ) && (sum(BB) ==data2$B1 ) ) ) 值为0时会返回this.position.startOffset,但在值为0以外的数字时却不会。

0

2 个答案:

答案 0 :(得分:1)

&&链将停止在第一个非真实(假)值的评估并返回它。由于0是假的,因此在遇到它时会返回。如果没有遇到假值,则返回最后一个值:

var a = 55 && [] && 0 && false && true;     // yeild 0 as it is the first falsy value to encounter

console.log("a:", a);

var b = 30 && true && [] && "haha";         // yeild "haha" as it is the last value (no falsy value encountered)

console.log("b:", b);

虚假值是:

  1. null
  2. undefined
  3. 空字符串''""
  4. 号码0
  5. 布尔false
  6. NaN

答案 1 :(得分:0)

这是因为javascript如何处理布尔表达式中的数字。 如果a和(&amp;&amp;)语句中的第一个参数返回0,则不会评估正确的参数,并返回0。