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 相关文章推荐
让iframe自适应高度(支持XHTML,支持FF)
Jul 24 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
js打造数组转json函数
Jan 14 Javascript
纯JS实现可拖拽表单的简单实例
Sep 02 Javascript
JavaScript字符串对象
Jan 14 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
Mar 01 Javascript
node.js的Express服务器基本使用教程
Jan 09 Javascript
详解基于webpack&gettext的前端多语言方案
Jan 29 Javascript
Javascript读取上传文件内容/类型/字节数
Apr 30 Javascript
js图片无缝滚动插件使用详解
May 26 Javascript
详解element-ui中el-select的默认选择项问题
Aug 02 Javascript
使用TS来编写express服务器的方法步骤
Oct 29 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
判断脚本加载是否完成的方法
2009/05/26 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
python杀死一个线程的方法
2015/09/06 Python
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
Foreo国际站:Foreo International
2018/10/29 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
酒店办公室文员岗位职责
2013/12/18 职场文书
办公室主任先进事迹
2014/01/18 职场文书
机械个人求职信范文
2014/01/24 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
酒店开业主持词
2015/07/02 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python
在Python 中将类对象序列化为JSON
2022/04/06 Python