![[红脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_63.c32f5b5.png)
Day9 !👀学习学习。
javascript的逻辑运算符其实更像一种选择器,会选择左右一个值作为返回值,而不是返回true或false
逻辑运算符的关联性和优先级:
· &&:采取左关联,优先级高于|| 高于 ?
· || : 采用左关联,优先级低于&&高于?
· ?: 采用右关联,优先级低于前两者。
验证:当两个逻辑运算符,三个操作数时,就会有运算符表达式的执行顺序(优先级)
var a = 42;
var b = ‘foo’;
var c = false;
a&&b||c; //foo
a||b&&c;//42
·因为&&的优先级高于||,所以结果不言而喻。
tip:&&运算符有一个很好的特性,即短路因为当左边表达式为假时,就不会对后边的表达式进行运算。一般用于 if(opts&&opts.cool),当没有opts时,表达式opts.cool会出错,这样用逻辑运算符连接,就起到了保护作用,同样也起到了不必要的代码运算。
·当三种逻辑运算符结合在一起使用就会牵扯优先级,其实更可以认为是更强的绑定。以下是示例可以解释各自的关联性,及优先级。
实例2:console.log(a && b || a || c && b ? b || c && a ? a || b : a && b : a && b);
解析:
步骤:1.(a && b) || a || (c && b) ? (c && a)? (a || b) : (a && b) : (a || b)
2.(a && b) || a || (c && b) {? (c && a)[? (a || b) : (a && b)] : (a || b)}
3. foo ? foo ? 1 : foo : foo
4. foo ? 1 : foo
5. 1
javascript的逻辑运算符其实更像一种选择器,会选择左右一个值作为返回值,而不是返回true或false
逻辑运算符的关联性和优先级:
· &&:采取左关联,优先级高于|| 高于 ?
· || : 采用左关联,优先级低于&&高于?
· ?: 采用右关联,优先级低于前两者。
验证:当两个逻辑运算符,三个操作数时,就会有运算符表达式的执行顺序(优先级)
var a = 42;
var b = ‘foo’;
var c = false;
a&&b||c; //foo
a||b&&c;//42
·因为&&的优先级高于||,所以结果不言而喻。
tip:&&运算符有一个很好的特性,即短路因为当左边表达式为假时,就不会对后边的表达式进行运算。一般用于 if(opts&&opts.cool),当没有opts时,表达式opts.cool会出错,这样用逻辑运算符连接,就起到了保护作用,同样也起到了不必要的代码运算。
·当三种逻辑运算符结合在一起使用就会牵扯优先级,其实更可以认为是更强的绑定。以下是示例可以解释各自的关联性,及优先级。
实例2:console.log(a && b || a || c && b ? b || c && a ? a || b : a && b : a && b);
解析:
步骤:1.(a && b) || a || (c && b) ? (c && a)? (a || b) : (a && b) : (a || b)
2.(a && b) || a || (c && b) {? (c && a)[? (a || b) : (a && b)] : (a || b)}
3. foo ? foo ? 1 : foo : foo
4. foo ? 1 : foo
5. 1
展开
评论
1