js中的 !! 和 ! 的区别
2024-10-13 14:54:22
简单描述:看老大提交的代码,发现了一个事情,有一处是连着两个! 然后就把我弄纳闷了,果断找度娘,原来如此。上代码
代码:
if(!!s && s.length > 0){
/*
*
*/
}
简单总结: !!s 表示只有当s有内容时候,后边的代码才执行,相当于对s加了个判断
if(s!=null&&typeof(s)!=undefined&&s!='')
两个感叹号就能是代码简洁不少,这么用法我还是第一次见到 ,老大牛X!
详细内容:
js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,
1、!可将变量转换成boolean类型,null、undefined和空字符串取反都为false,其余都为true。
1 !null=true
2
3 !undefined=true
4
5 !''=true
6
7 !100=false
8
9 !'abc'=false
2、!!常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码:
判断变量a为非空,未定义或者非空串才能执行方法体的内容
var a;
if(a!=null&&typeof(a)!=undefined&&a!=''){
//a有内容才执行的代码
}
实际上我们只需要写一个判断表达:
if(!!a){
//a有内容才执行的代码...
}
就能和上面达到同样的效果。a是有实际含义的变量才执行方法,否则变量null,undefined和''空串都不会执行以下代码。
可以总结出来,“!”是逻辑与运算,并且可以与任何变量进行逻辑与将其转化为布尔值,“!!”则是逻辑与的取反运算,尤其后者在判断类型时代码简洁高效,省去了多次判断null、undefined和空字符串的冗余代码。
文章来自:https://www.cnblogs.com/tison/p/8111712.html
最新文章
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
- NodeJs端口被占用的情况
- 光盘刻录 CD刻录软件 Ashampoo Burning Studio特别版 刻录CD就这么简单
- javascript数据结构-栈
- Atitit 三论”(系统论、控制论、信息论
- jQuery1.11源码分析(5)-----Sizzle编译和过滤阶段[原创]
- MySQL 数据库性能优化之SQL优化
- C51关键字
- PE 文件
- ps的使用方法
- .NET Orm 性能测试
- git教程:版本退回
- canvas绘图——根据鼠标位置进行缩放的实现原理
- JAVA学习记录(二)————JAVA中的IO
- linux下下载redis,并且编译
- [HAOI2015]按位或(min-max容斥,FWT,FMT)
- 快学Scala 2
- PAT甲题题解-1104. Sum of Number Segments (20)-(水题)
- Appium 坑
- Yii中文乱码 解决
热门文章
- DEA和模糊综合评价
- 【提取元素的值 】【追加文本append】【删除文本remove】【class的操作】【读取元素的宽度,高度】
- docker安装问题:E: Package 'docker-ce' has no installation candidate
- jQuery单选框的回显
- SQL Server - SQL语言组成 (DML、DDL、DCL、DQL的区别)
- Linux 文件系统IO性能优化【转】
- 两种 AuthorizationSchemes 在 ASP.NET Core 2
- python 彩色日志配置
- curl的http上传文件代码
- 《转》return *this和 return this有什么区别?