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 当前日期加(天、周、月、年)
Aug 09 Javascript
Jquery Select操作方法集合脚本之家特别版
May 17 Javascript
div失去焦点事件实现思路
Apr 22 Javascript
node.js中的fs.lstatSync方法使用说明
Dec 16 Javascript
jQuery实现鼠标点击弹出渐变层的方法
Jul 09 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
javascript数组去重的六种方法汇总
Aug 16 Javascript
Vue数据驱动模拟实现1
Jan 11 Javascript
JavaScript中使用import 和require打包后实现原理分析
Mar 07 Javascript
用p5.js制作烟花特效的示例代码
Mar 21 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
JS监听组合按键思路及实现过程
Apr 17 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排序算法(冒泡排序,快速排序)
2012/10/09 PHP
php内存缓存实现方法
2015/01/24 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
详解python3中的真值测试
2018/08/13 Python
python文本数据处理学习笔记详解
2019/06/17 Python
解析python实现Lasso回归
2019/09/11 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
安全生产目标责任书
2014/04/14 职场文书
维修工先进事迹
2014/05/29 职场文书
党员作风建设自查报告
2014/10/23 职场文书
设备技术员岗位职责
2015/04/11 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS