全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2025-03-10_新手小白如何使用!!运算符写出更简洁直观的代码?

您的位置:首页 >> 新闻 >> 行业资讯

新手小白如何使用!!运算符写出更简洁直观的代码? 点击关注公众号,“技术干货”及时达! !!在项目中的妙用最近公司来了几个实习生,在领导的示意下,我负责帮他们优化审查代码。其中,有一个实习生的代码着实吸引了我。 业务应该是要做非空判断,他的代码是这么写的: if(str!=""str!=0str!=nullstr!=undefined){ //逻辑处理... } 代码写的是没有问题的,但是我觉得可以优化,于是把他叫来了。我告诉他这个代码可以这么优化: if(!!str){ //逻辑处理... } 「他非常吃惊,居然还可以这么写,很激动的问我啥原理」。于是,我给他详细的讲了这个知识点。 他也很聪明,给他讲完这个知识点后,他立马举一反三,说「判断接口返回空数组」是不是可以这么写: if(!!data.length){ //数组为空 } 看来他确实是明白这个知识点了,于是,我对他做了肯定! 鉴于一些小白不懂这个知识点,我详细的给大家介绍下吧! !!的原理再介绍!!的原理的原理前,我们需要了解一些前置知识。在 JavaScript 中,所有的值都可以被「隐式转换」为布尔值。在这种转换中,值会被分类为“真值” (truthy) 或“假值” (falsy)。 真值和假值「假值 (falsy)」 :在转换为布尔值时被视为 false 的值,包括:?false0 (数字零)-0 (负零)"" (空字符串)nullundefinedNaN (非数字)?「真值 (truthy)」 :除了上述假值外,所有其他值在转换为布尔值时都被视为 true。在条件判断if和逻辑运算中,所有的值都会被进行隐式抓换。如: if(0){ } //if中的0被视为false if(1){ } //if中的1被视为true(1是真值) !! 运算符的工作机制!! 可以将一个值强制转换为「布尔值」。它背后的原理是双重否定(double negation):通过两次应用逻辑非运算符 !,将一个任意类型的值转换为 true 或 false。 「第一个」 !「运算符」:将值转换为布尔值,并将其取反。也就是说,如果值是「真值」 ,则第一个 ! 会将其转换为 false;如果值是「假值」,则第一个 ! 会将其转换为 true。 「第二个」 !「运算符」:再次取反前一步的结果,将其转换为相应的布尔值。如果前一步结果是 false,则第二个 ! 会将其转换为 true;如果前一步结果是 true,则第二个 ! 会将其转换为 false。 这样,经过 !! 运算后的结果就是将原始值强制转换为布尔值。 我们可以通过下面的示例巩固理解 console.log(!!0);//false //数字0是假值,!0的结果是true,再次取反,!!0的结果就是false console.log(!!'0');//true //字符0是真值,!'0'的结果是false,再次取反,!!'0'的结果就是true console.log(!!1);//true //数字1是真值,!1的结果是false,再次取反,!!1的结果就是true console.log(!!"");//false //字符""是假值,!""的结果是true,再次取反,!!""的结果就是false console.log(!!"hello");//true //hello是真值,双重取反就是true console.log(!!null);//false //null是假值,双重取反就是false console.log(!!undefined);//false //undefined是假值,双重取反就是false console.log(!!{});//true //{}是真值,双重取反就是true console.log(!![]);//true //[]是真值,双重取反就是true 通过上述示例,我们可以快速得到一个结论: ?「如果某个值是真值,使用!!就是true」 「如果某个值是价值,使用!!就是fasle」 ?可见,要想熟练使用!!运算符,一定要清楚知道假值有哪些,真值有哪些! !!的应用场景将任意值转换为布尔值!! 可以将任何类型的值(如对象、字符串、数字等)转换为布尔值,如果我们需要明确一个值是 true 还是 false 时很有用。 letisValid=!!inputValue;//将inputValue转换为布尔值,判断其是否为真值 注意:数字0是假值,如果inputValue是0,但是0有效,慎用! 条件判断的简化当需要判断变量是否为非空、非零、非 null、非 undefined 等时,!! 可以直接使用。 if(!!str){ //str是一个非空字符串 } //同 if(str!=""str!=0str!=nullstr!=undefined){ //str是一个非空字符串 } 确保返回值为布尔类型在函数返回值需要是布尔类型时,!! 是一种确保返回值为 true 或 false 的最简单方法。再判断数组是不是为空时,这非常好用! functionisEmpty(arr){ return!!arr.length;//如果数组非空,返回true,否则返回false } console.log(isEmpty([]));//false console.log(isEmpty([1]));//true 在逻辑运算中的应用在复杂的逻辑运算中,使用 !! 可以将结果强制转换为布尔值,确保逻辑表达式的返回值是 true 或 false。 constisActive=!!user!!user.isActive; 总结这篇文章介绍了!!的原理,它核心依赖于 JavaScript 的隐式转换,因此我们必须知道真值和假值。同时,这篇文章介绍了!!的使用场景,大家可以根据情况使用! 但注意,!!可读性比较差,对于初学者,最好不要使用!如果你想希望代码更加清晰,可以考虑使用 Boolean() 函数来代替 !!。 点击关注公众号,“技术干货”及时达! 阅读原文

上一篇:2022-12-07_「营销看点」11月精彩案例复盘,给你好看! 下一篇:2024-12-15_哗然!MIT教授NeurIPS演讲公开歧视中国学生,大会官方认错、本人道歉

TAG标签:

15
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价