JavaScript中双叹号(!!)作用示例介绍


Posted in Javascript onApril 10, 2014

经常看到这样的例子:

var a; 
var b=!!a;

a默认是undefined。!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判断提供便利。

!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;
因为javascript是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型,类似的如:

a=parseInt(“1234″) 
a=”1234″-0 //转换为数字 
b=1234+”” //转换为字符串 
c=someObject.toString() //将对象转换为字符串

其中第1种、第4种为显式转换,2、3为隐式转换

布尔型的转换,javascript约定规则为

false、undefinded、null、0、”” 为 false
true、1、”somestring”、[Object] 为 true

对null与undefined等其他用隐式转换的值,用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于将这些值转换为“等价”的布尔值;
再来看看:

var foo; 
alert(!foo);//undifined情况下,一个感叹号返回的是true; 
alert(!goo);//null情况下,一个感叹号返回的也是true; 
var o={flag:true}; 
var test=!!o.flag;//等效于var test=o.flag||false; 
alert(test);

这段例子,演示了在undifined和null时,用一个感叹号返回的都是true,用两个感叹号返回的就是false,所以两个感叹号的作用就在于,如果明确设置了变量的值(非null/undifined/0/”“等值),结果就会根据变量的实际值来返回,如果没有设置,结果就会返回false。
Javascript 相关文章推荐
xml和web特殊字符
Apr 28 Javascript
利用jquery操作select下拉列表框的代码
Jun 04 Javascript
js将long日期格式转换为标准日期格式实现思路
Apr 07 Javascript
js转义字符介绍
Nov 05 Javascript
微信小程序 蓝牙的实现实例代码
Jun 27 Javascript
微信小程序 跳转传递数据的实例
Jul 06 Javascript
vue-cli webpack2项目打包优化分享
Feb 07 Javascript
axios post提交formdata的实例
Mar 16 Javascript
VUE 配置vue-devtools调试工具及安装方法
Sep 30 Javascript
详解async/await 异步应用的常用场景
May 13 Javascript
Vue代码整洁之去重方法整理
Aug 06 Javascript
Node.js系列之安装配置与基本使用(1)
Aug 30 Javascript
js实现图片旋转的三种方法
Apr 10 #Javascript
javascript:void(0)的问题使用探讨
Apr 10 #Javascript
ajax请求乱码的解决方法(中文乱码)
Apr 10 #Javascript
php的文件上传入门教程(实例讲解)
Apr 10 #Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
Apr 10 #Javascript
javascript的propertyIsEnumerable()方法使用介绍
Apr 09 #Javascript
常见的原始JS选择器使用方法总结
Apr 09 #Javascript
You might like
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
php接口隔离原则实例分析
2019/11/11 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
利用python爬取软考试题之ip自动代理
2017/03/28 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
物业经理求职自我评价
2013/09/22 职场文书
电子商务专业个人的自我评价分享
2013/10/29 职场文书
审核会计岗位职责
2013/11/08 职场文书
火锅店营销方案
2014/02/26 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
九年级英语教学反思
2016/02/15 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL