a=''||'abc'; //返回什么? 'abc'
a=1||2; //返回什么? 1
var a=0; var b=++a||++a ; //a=1;b=1;
b=''&&'abc' //返回什么? ’‘
b=1&&2 //返回什么? 2
var a=0; var b=++a&&++a ; //a=2;b=2;
开始我还以为只会返回false或true。
规则就是:
||: 从左到右运算其中的表达式,直到遇到表达式为true,则直接返回这个表达式,后面的表达式不再运算;一直都没遇到,则返回最后那个表达式。
&&:从左到右运算其中的表达式,直到遇到表达式为false,则直接返回这个表达式,后面的表达式不再运算;一直都没遇到,则返回最后那个表达式。
这两种操作符属于短路操作符,只要已经得出最终结果了,就不再继续计算下去。