js中!和!!的区别与用法


Posted in Javascript onMay 09, 2020

js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,

1、!可将变量转换成boolean类型,null、undefined和空字符串取反都为false,其余都为true。

!null=true
!undefined=true
!''=true
!100=false
!'abc'=false

2、!!常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码:
判断变量a为非空,未定义或者非空串才能执行方法体的内容

var a;
if(a!=null&&typeof(a)!=undefined&&a!=''){
  //a有内容才执行的代码 
}

实际上我们只需要写一个判断表达:

if(!!a){
//a有内容才执行的代码... 
}

就能和上面达到同样的效果。a是有实际含义的变量才执行方法,否则变量null,undefined和''空串都不会执行以下代码。

可以总结出来,“!”是逻辑与运算,并且可以与任何变量进行逻辑与将其转化为布尔值,“!!”则是逻辑与的取反运算,尤其后者在判断类型时代码简洁高效,省去了多次判断null、undefined和空字符串的冗余代码。

下面是其他网友的补充

js 中 !!的用法

!!是将表达式强制转化为bool值的运算,运算结果为true或false,表达式是什么值,结果就是对应的bool值,不再取非。

不是取非再取非的意思!!!

!!false=false;    要注意false和“false” 的区别!!!!!

!!"false"=true;

!!true=true;

!!(NaN || undefined || null || 0 || ' ')=false;

var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test);

由于对null与undefined用!操作符时都会产生true的结果,
所以用两个感叹号的作用就在于,
如果明确设置了o中flag的值(非 null/undefined/0""/等值),自然test就会取跟o.flag一样的值;
如果没有设置,test就会默认为false,而不是 null或undefined。

Javascript 相关文章推荐
javascript中this做事件参数相关问题解答
Mar 17 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Nov 14 Javascript
JS注释所产生的bug 即使注释也会执行
Nov 19 Javascript
实现placeholder效果的方案汇总
Jun 11 Javascript
JavaScript页面实时显示当前时间实例代码
Oct 23 Javascript
JS双击变input框批量修改内容
Dec 12 Javascript
jquery——九宫格大转盘抽奖实例
Jan 16 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
Vue实现PopupWindow组件详解
Apr 28 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
Jul 03 Javascript
package.json中homepage属性的作用详解
Mar 11 Javascript
JS数组去重详情
Nov 07 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
May 09 #Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
May 09 #Javascript
js根据后缀判断文件文件类型的代码
May 09 #Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
May 09 #Javascript
JS原形与原型链深入详解
May 09 #Javascript
JavaScript中的this妙用实例分析
May 09 #Javascript
JavaScript中继承原理与用法实例入门
May 09 #Javascript
You might like
thinkPHP自动验证机制详解
2016/12/05 PHP
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
python-opencv颜色提取分割方法
2018/12/08 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
美国存储和组织商店:The Container Store
2017/08/16 全球购物
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
总经理工作职责范文
2014/03/14 职场文书
大学三年计划书范文
2014/04/30 职场文书
红与黑读书笔记
2015/06/29 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB