简单描述:看老大提交的代码,发现了一个事情,有一处是连着两个!  然后就把我弄纳闷了,果断找度娘,原来如此。上代码

代码:

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
												

最新文章

  1. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
  2. NodeJs端口被占用的情况
  3. 光盘刻录 CD刻录软件 Ashampoo Burning Studio特别版 刻录CD就这么简单
  4. javascript数据结构-栈
  5. Atitit 三论”(系统论、控制论、信息论
  6. jQuery1.11源码分析(5)-----Sizzle编译和过滤阶段[原创]
  7. MySQL 数据库性能优化之SQL优化
  8. C51关键字
  9. PE 文件
  10. ps的使用方法
  11. .NET Orm 性能测试
  12. git教程:版本退回
  13. canvas绘图——根据鼠标位置进行缩放的实现原理
  14. JAVA学习记录(二)————JAVA中的IO
  15. linux下下载redis,并且编译
  16. [HAOI2015]按位或(min-max容斥,FWT,FMT)
  17. 快学Scala 2
  18. PAT甲题题解-1104. Sum of Number Segments (20)-(水题)
  19. Appium 坑
  20. Yii中文乱码 解决

热门文章

  1. DEA和模糊综合评价
  2. 【提取元素的值 】【追加文本append】【删除文本remove】【class的操作】【读取元素的宽度,高度】
  3. docker安装问题:E: Package 'docker-ce' has no installation candidate
  4. jQuery单选框的回显
  5. SQL Server - SQL语言组成 (DML、DDL、DCL、DQL的区别)
  6. Linux 文件系统IO性能优化【转】
  7. 两种 AuthorizationSchemes 在 ASP.NET Core 2
  8. python 彩色日志配置
  9. curl的http上传文件代码
  10. 《转》return *this和 return this有什么区别?