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 相关文章推荐
JS鼠标事件大全 推荐收藏
Nov 01 Javascript
解析JavaScript中点号“.”的多义性
Dec 02 Javascript
javascript的解析执行顺序在各个浏览器中的不同
Mar 17 Javascript
javascript屏蔽右键代码
May 15 Javascript
纯JavaScript代码实现文本比较工具
Feb 17 Javascript
javascript学习指南之回调问题
Apr 23 Javascript
JS加载器如何动态加载外部js文件
May 26 Javascript
Jquery遍历select option和添加移除option的实现方法
Aug 26 Javascript
AngularJs 常用的过滤器
May 15 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
Apr 28 Javascript
微信小程序如何访问公众号文章
Jul 08 Javascript
layui-table获得当前行的上/下一行数据的例子
Sep 24 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文章按日期(月日)SQL归档语句
2012/11/29 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
jquery prop的使用介绍及与attr的区别
2013/12/19 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
JS中数组重排序方法
2016/11/11 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
mui框架移动开发初体验详解
2017/10/11 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
tensorflow识别自己手写数字
2018/03/14 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
对Python3 序列解包详解
2019/02/16 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
美国糖果店:Sugarfina
2019/02/21 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
平安家庭示范户事迹
2014/06/02 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
土地租赁协议书
2015/01/29 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
JS代码编译器Monaco使用方法
2021/06/11 Javascript
Java数据结构之链表相关知识总结
2021/06/18 Java/Android