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 相关文章推荐
谷歌浏览器 insertCell与appendChild的区别
Feb 12 Javascript
js将long日期格式转换为标准日期格式实现思路
Apr 07 Javascript
jquery中的过滤操作详细解析
Dec 02 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
Dec 07 Javascript
VUE实现日历组件功能
Mar 13 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
Jun 13 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
May 08 Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 Javascript
layui表格分页 记录勾选的实例
Sep 02 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 Javascript
javascript实现简易数码时钟
Mar 30 Javascript
vue实现简易计算器功能
Jan 20 Vue.js
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
国内咖啡文化
2021/03/03 咖啡文化
用php来检测proxy
2006/10/09 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
PDO::prepare讲解
2019/01/29 PHP
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
Python使用numpy实现BP神经网络
2018/03/10 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
python英语单词测试小程序代码实例
2019/09/09 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
工作中个人的自我评价
2013/12/31 职场文书
高中生期末评语
2014/01/28 职场文书
《悯农》教学反思
2014/04/28 职场文书
留学经费担保书
2014/05/12 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
Java 超详细讲解数据结构中的堆的应用
2022/04/02 Java/Android