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 相关文章推荐
读jQuery之十三 添加事件和删除事件的核心方法
Aug 23 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
Dec 10 Javascript
Jquery中val()表单取值赋值的实例代码
Aug 15 Javascript
页面刷新时记住滚动条的位置jquery代码
Jun 17 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
Mar 11 Javascript
JavaScript中5种调用函数的方法
Mar 12 Javascript
使用Node.js配合Nginx实现高负载网络
Jun 28 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
Dec 13 Javascript
jQuery给表格添加分页效果
Mar 02 Javascript
微信小程序多张图片上传功能
Jun 07 Javascript
Angular4绑定html内容出现警告的处理方法
Nov 03 Javascript
Node.js中的异步生成器与异步迭代详解
Jan 31 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模板页面中分页代码的解析
2009/02/06 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
2017/02/06 PHP
PHP _construct()函数讲解
2019/02/03 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
Python PyQt5整理介绍
2020/04/01 Python
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
关于礼仪的演讲稿
2014/01/04 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
新闻编辑求职信
2014/07/13 职场文书
公司地址变更通知
2015/04/25 职场文书
党支部评议意见
2015/06/02 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS
python实现自定义日志的具体方法
2021/05/28 Python
nginx容器方式反向代理实战
2022/04/18 Servers