JS逻辑运算符包括几种,特点是什么
Admin 2022-11-15 群英技术资讯 512 次浏览
JavaScript中有三个逻辑运算符,&&与、||或、!非,虽然他们被称为逻辑运算符,但这些运算符却可以被应用于任意类型的值而不仅仅是布尔值,他们的结果也同样可以是任意类型。
如果一个值可以被转换为true,那么这个值就是所谓的truthy,如果可以被转换为false,那么这个值就是所谓的falsy。会被转换为false的表达式有: null、NaN、0、空字符串、undefined。
尽管&&和||运算符能够使用非布尔值的操作数,但它们依然可以被看作是布尔操作符,因为它们的返回值总是能够被转换为布尔值,如果要显式地将它们的返回值或者表达式转换为布尔值,可以使用双重非运算符即!!或者Boolean构造函数。
首先说一下,其他数据类型转换为布尔类型的规则: null、undefined、0、NaN、空字符串转换为false,其他转化为 true。
首先把数据转化为布尔值,然后取反,结果为 true 或 false。
<script type="text/javascript"> var a = [1,2,3]; var b = "hello"; var obj = new Object(); var d; console.log(!""); //true console.log(!d); //true console.log(!a); //false console.log(!b); //false console.log(!obj); //false </script>
JavaScript 中逻辑与和其他语言不太一样,如果第一个操作数是 true(或者能够转为 true),计算结果就是第二个操作数,如果第一个操作数是 false,结果就是 false(短路计算),对于一些特殊数值不遵循以上规则。(个人理解为:如果运算的第一个操作数为true,则返回第二个操作数,反之则返回第一个操作数)
<script type="text/javascript"> var a = [1,2,3]; var b = "hello"; var obj = new Object(); var d; console.log(true && 10); //第一个操作数是true,结果是第二个操作,也就是10 console.log(false && b); //第一个操作数是false,结果flase console.log(100 && false); //第一个操作数是100,结果flase console.log(undefined && false); //第一个操作数是undefined,结果undefined console.log(NaN && false); //第一个操作数是NaN,结果NaN console.log(null && false); //第一个操作数是null,结果null console.log('' && false); //第一个操作数是空串,结果空串 console.log(0 && 100); //结果是0 console.log(5 && 100); //100 console.log(a && b); //hello console.log(obj && 200); //200 </script>
如果第一个操作数不是 false,结果就是第一个操作数,否则结果是第二个操作数。如果第一个操作数能够转为 true,结果就是第一个操作数(个人理解为:如果运算的第一个操作数为 true,则返回第一个操作数,反之则返回第二个操作数)
<script type="text/javascript"> var a = [1,2,3]; var b = "hello"; var obj = new Object(); var d; console.log(true || 10); //第一个操作数是true,结果是第一个操作,也就是true console.log(false || b); //第一个操作数是false,结果是第二个操作数b console.log(100 || false); //第一个操作数是100,结果100 console.log(undefined || 9); //第一个操作数是undefined转false,结果9 console.log(NaN || false); //第一个操作数是NaN转false,结果第二个操作数 console.log(null || a); //第一个操作数是null转false,结果a console.log('' || false); //第一个操作数是空串转false,结果第二操作数 console.log(0 || 100); //结果是100 console.log(5 || 100); //5 console.log(a || b); //a console.log(obj || 200); //obj </script>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
pkg是一个很不错的跨平台nodejs应用打包工具,使用此工具,我们只需要给与用户提供一个简单的可执行文件就可以了,同时代码也是二进制的,提高了代码的安全性备注:测试demo很简单,也比较典型,包装了sofa框架,我们可以直接查看graphqlapi以及openapi环境准备
这篇文章主要为大家详细介绍了js实现支付倒计时返回首页,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Node.js怎么实现分片上传?下面本篇文章给大家介绍一下Node.js实现分片上传的方法,希望对大家有所帮助!
这篇文章主要给大家介绍了关于Nest.js散列与加密的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本篇文章给大家带来了关于javascript的相关知识,主要介绍了总结分享10个JavaScript代码优化小tips,文章围绕主题展开详细的内容介绍,具有一定的参考价值,希望对大家有帮助。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008