javascript中2个感叹号的用法实例详解


Posted in Javascript onSeptember 04, 2014

在javascript代码中经常会见到!!的情况,本文即以实例形式较为深入的分析javascript中2个感叹号的用法。分享给大家供大家参考之用。具体分析如下:

javascript中的!!是逻辑"非非",即是在逻辑“非”的基础上再"非"一次。通过!或!!可以将很多类型转换成bool类型,再做其它判断。

一、应用场景:判断一个对象是否存在

假设有这样一个json对象:

{ color: "#E3E3E3", "font-weight": "bold" }

需要判断是否存在,用!!再好不过。

如果仅仅打印对象,无法判断是否存在:

var temp = { color: "#A60000", "font-weight": "bold" };
alert(temp);

结果:[object: Object]

如果对json对象实施!或!!,就可以判断该json对象是否存在:

var temp = { color: "#A60000", "font-weight": "bold" };
alert(!temp);

结果:false

var temp = { color: "#A60000", "font-weight": "bold" };
alert(!!temp);

结果:true

二、通过!或!!把各种类型转换成bool类型的惯例

1.对null的"非"返回true

var temp = null;
alert(temp);

结果:null

var temp = null;
alert(!temp);

结果:true

var temp = null;
alert(!!temp);

结果:false

2.对undefined的"非"返回true

var temp;
alert(temp);

结果:undefined

var temp;
alert(!temp);

结果:true

var temp;
alert(!!temp);

结果:false

3.对空字符串的"非"返回true

var temp="";
alert(temp);

结果:空

var temp="";
alert(!temp);

结果:true

var temp="";
alert(!!temp);

结果:false

4.对非零整型的"非"返回false

var temp=1;
alert(temp);

结果:1

var temp=1;
alert(!temp);

结果:false

var temp=1;
alert(!!temp);

结果:true

5.对0的"非"返回true

var temp = 0;
alert(temp);

结果:0

var temp = 0;
alert(!temp);

结果:true

var temp = 0;
alert(!!temp);

结果:false

6.对字符串的"非"返回false

var temp="ab";
alert(temp);

结果:ab

var temp="ab";
alert(!temp);

结果:false

var temp="ab";
alert(!!temp);

结果:true

7.对数组的"非"返回false

var temp=[1,2];
alert(temp);

结果:1,2

var temp=[1,2];
alert(!temp);

结果:false

var temp=[1,2];
alert(!!temp);

结果:true

相信本文所述对大家的javascript程序设计的学习有一定的借鉴价值。

Javascript 相关文章推荐
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
Apr 01 Javascript
再论Javascript下字符串连接的性能
Mar 05 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
Jan 15 Javascript
node.js中的fs.appendFileSync方法使用说明
Dec 17 Javascript
ajax如何实现页面局部跳转与结果返回
Aug 24 Javascript
每天一篇javascript学习小结(Date对象)
Nov 13 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
Mar 07 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
angularJs select绑定的model取不到值的解决方法
Oct 08 Javascript
Javascript类型判断相关例题及解析
Aug 26 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
Oct 27 Javascript
IE下通过a实现location.href 获取referer的值
Sep 04 #Javascript
通过location.replace禁止浏览器后退防止重复提交
Sep 04 #Javascript
下拉框select的绑定示例
Sep 04 #Javascript
javascript使用正则获取url上的某个参数
Sep 04 #Javascript
JavaScript中匿名、命名函数的性能测试
Sep 04 #Javascript
容易造成JavaScript内存泄露几个方面
Sep 04 #Javascript
require.js深入了解 require.js特性介绍
Sep 04 #Javascript
You might like
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
js 判断脚本加载完毕的代码
2011/07/13 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
react redux入门示例
2018/04/19 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python实现学校管理系统
2018/01/11 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
django之自定义软删除Model的方法
2019/08/14 Python
pygame实现五子棋游戏
2019/10/29 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
司法局火灾防控方案
2014/06/05 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
go开发alertmanger实现钉钉报警
2021/07/16 Golang