JS逻辑运算符包括几种,特点是什么
Admin 2022-11-15 群英技术资讯 460 次浏览
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天给大家分享的是用Vue如何实现图片裁剪功能的内容,本文会使用到Vue图片裁剪组件,该组件是基于vue-cropper二次封装,接下来我们来具体看看vue实现图片裁剪功能的实例。
这篇文章主要介绍了详细对比Ember.js和Vue.js,对JS框架感兴趣的同学,可以参考下
本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了JavaScript变量or循环中的var和let详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,下面一起来看一下,希望对大家有帮助。
这篇文章主要介绍了详解Element-ui NavMenu子菜单使用递归生成时使用报错,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
js中的this关键字平时在开发中使用时倒是也能正常应用,但是对其使用和判断并不能信手拈来,所以下面这篇文章主要给大家介绍了关于js中this关键字的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008