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 相关文章推荐
利用javascript/jquery对上传文件格式过滤的方法
Jul 25 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
浅谈 jQuery 事件源码定位问题
Jun 18 Javascript
JavaScript中Cookie操作实例
Jan 09 Javascript
28个常用JavaScript方法集锦
Jan 14 Javascript
JQUERY表单暂存功能插件分享
Feb 23 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
JS中input表单隐藏域及其使用方法
Feb 13 Javascript
微信小程序自定义tabBar组件开发详解
Sep 24 Javascript
详解如何用typescript开发koa2的二三事
Nov 13 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
Oct 31 Javascript
Vue实现动态查询规则生成组件
May 27 Vue.js
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中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
Django自定义分页与bootstrap分页结合
2021/02/22 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
python Tornado框架的使用示例
2020/10/19 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
早读课迟到检讨书
2014/09/25 职场文书
兴趣班停课通知
2015/04/24 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
中秋节祝酒词
2015/08/12 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript