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 相关文章推荐
node.js实现BigPipe详解
Dec 05 Javascript
js判断某个方法是否存在实例代码
Jan 10 Javascript
jQuery实现dialog设置focus焦点的方法
Jun 10 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
Dec 14 Javascript
深入理解javascript中的 “this”
Jan 17 Javascript
BOM之navigator对象和用户代理检测
Feb 10 Javascript
AngularJS 限定$scope的范围实例详解
Jun 23 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
js如何获取图片url的Blob值并预览示例代码
Mar 07 Javascript
微信小程序wxml列表渲染原理解析
Nov 27 Javascript
js实现文章目录索引导航(table of content)
May 10 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
PHP6 先修班 JSON实例代码
2008/08/23 PHP
php字符串截取的简单方法
2013/07/04 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
用Python编写简单的微博爬虫
2016/03/04 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
pandas去除重复列的实现方法
2019/01/29 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
团代会主持词
2014/04/02 职场文书
工程承包协议书
2014/04/22 职场文书
离婚财产处理协议书
2014/09/30 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
关于迟到的检讨书
2015/05/06 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
七年级数学教学反思
2016/02/17 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书