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 相关文章推荐
JavaScript 学习小结(适合新手参考)
Jul 30 Javascript
JavaScript 设计模式 富有表现力的Javascript(一)
May 26 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
Jul 27 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
Jan 25 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
Jun 08 Javascript
最原始的jQuery注册验证方式
Oct 11 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
Mar 01 Javascript
vue iView 上传组件之手动上传功能
Mar 16 Javascript
Node.js操作系统OS模块用法分析
Jan 04 Javascript
vue指令v-html使用过滤器filters功能实例
Oct 25 Javascript
JavaScript undefined及null区别实例解析
Jul 21 Javascript
vant组件中 dialog的确认按钮的回调事件操作
Nov 04 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
python清除字符串里非数字字符的方法
2015/07/02 Python
python实现停车管理系统
2018/11/30 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
python机器学习实现决策树
2019/11/11 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
Keras中的多分类损失函数用法categorical_crossentropy
2020/06/11 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
python实现斗地主分牌洗牌
2020/06/22 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
低碳环保倡议书
2014/04/14 职场文书
无毒社区工作方案
2014/05/23 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
市级三好生竞选稿
2015/11/21 职场文书
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python