Javascript逻辑运算的返回值
来源:互联网 发布:尤克里里和吉他知乎 编辑:程序博客网 时间:2024/05/18 02:31
之前一直以为逻辑运算符(&&、||、!)返回值就是true或false,其实不然。
知识点一:&&运算符有“短路”的行为,即如果&&的第一个运算数是false,就不再考虑第二个运算数;如果||的第一个运算数是true,也不再考虑第二个运算数。
知识点二:&&和||运算符两侧的运算数可以是变量(variable),也可以是关系表达式(expression),也可以是二者都有。
知识点三:在js逻辑运算中,变量运算数返回其本身的值,关系表达式运算数返回true或false。
知识点四:在js逻辑运算中,变量运算数如果是数字0、空字符串""、null、false、undefined、数字NaN,则会判定为false(注意此处是“判定”为false,并不是返回false)。
知识点五:逻辑运算的最后结果,是能够最终判定这次逻辑运算真假的那个运算数的返回值。
可能有点绕,看以下代码及分析就好理解了:
var str="abc";var num=0;var bo1=true;var bo2=false;console.log(num||str); // abcconsole.log(num&&str); // 0console.log(str&&num); // 0console.log(num&&bo1);// 0console.log(num||bo1);// trueconsole.log(num||bo2);// falseconsole.log(num<1||str); // trueconsole.log(num&&str=="abc"); // 0console.log(num<1&&str=="abc"); // true
对于第6行,num和str都是变量,返回值分别为其本身的值0和“abc”,此次逻辑运算“num||str”的过程是这样的:首先num被判定为false,但因为是逻辑或运算,整个逻辑运算还不能确定是真是假,所以接下来判定str,结果为true,则整个式子判定为真,但为什么最终输出“abc”呢?根据上述第五条,因为str是最终判定这次逻辑运算真假的那个运算数,所以整个式子的最终结果是str的返回值,也就是“abc”。
对于第7行,num首先被判定为false,因为是逻辑与运算,有“短路”行为发生,所以无论str真假,整个逻辑运算都判定为假。这儿,num决定了这次逻辑运算的真假,所以最终返回了num的返回值,也就是0。 第9行也是一样的道理。
对于第8行,str首先被判定为true,因为是逻辑与运算,这时整个逻辑运算的判定结果就取决于第二个运算数num了,num判定为false,则整个逻辑运算的判定结果为假,但最终返回的是num的值0。
对于第13行“num<1||str”,num<1判定结果为真,返回结果为true(因为是关系表达式),往下走发现是||运算,则整个式子的判定结果已经由num<1确定,则返回num<1的返回结果,也就是true。
其它行的结果可以类推。
另:C++中的&&和||运算的运算数似乎不能同时为变量。可以是a>0||b,a-b>0&&b<-1,“love”||12这种,不能是a||b,a&&b这种。且如果最终判定为true,则返回1,最终判定为false,则返回0。
- Javascript逻辑运算的返回值
- python逻辑运算的返回值
- JavaScript中的逻辑运算的返回值(逻辑与&&,逻辑或||,逻辑非!)
- (转)JavaScript中的逻辑运算的返回值(逻辑与&&,逻辑或||,逻辑非!)
- JS-逻辑运算符&&和||的返回值
- Python 逻辑运算返回值
- javascript的||和&&逻辑运算
- javascript逻辑运算符的优先级
- JavaScript逻辑运算
- Javascript 逻辑运算
- js 逻辑运算符&&和||返回值
- javaScript的!逻辑运算符小技巧整理
- js中逻辑运算符|| 的返回值并不只有true和false
- 逻辑运算符 and 和 or 的运行返回机制
- javascript 比较逻辑运算符
- javascript逻辑运算符“||”和“&&”
- javascript中 逻辑运算
- javascript逻辑运算符
- hive二种连接方式
- DPM(Deformable Parts Model)--原理(一)
- go语言入门必备
- 简述复权的计算
- 顺时针打印矩阵
- Javascript逻辑运算的返回值
- 【JavaSE学习笔记】IO流06_其他常用流(基本数据类型流、内存操作流、打印流、标准流、随机访问流、合并流、序列化与反序列化流)、属性集合类Properties
- POJ-1066Treasure Hunt(计算几何线段相交)
- Machine Learning7集成学习(一种高效的学习方法)
- 【Computer】第一次机房收费系统——配置流程(一)
- hdu 6096
- whoosh学习
- hdu6095 Rikka with Competition 2017多校第五场 贪心+思维
- CAS锁c源码实现