美文网首页
一道关于三木运算的面试题

一道关于三木运算的面试题

作者: keknei | 来源:发表于2021-11-11 17:18 被阅读0次

我们先看一下这道题,d等于多少?

var a = 42;
var b = "foo";
var c = false;
var d = a && b || c ? c || b ? a : c && b : a;
console.log(d);//42

首先我们先翻译一下将

var d = a && b || c ? c || b ? a : c && b : a

翻译成,增加可读性读

var d = ((a && b) || c) ? ((c || b) ? a : (c && b)) : a

(a && b) || c)true(c || b)true ,所以d=a,也就是42。

其中有意思的是(c && b) ,我们声明一个变量直接等于它,看是什么?

let s=c && b;
console.log(s);//false

打印出来的是false,我们再声明一个变量

let x=a && b; 
console.log(foo);//"foo"

打印出来的是"foo",为什么呢?因为c && bcfalse,所以不会往后走了,而a && b中的atrue,所以还会往下走继续判断b,最终结果就是"foo"

相关文章

网友评论

      本文标题:一道关于三木运算的面试题

      本文链接:https://www.haomeiwen.com/subject/euhgzltx.html