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 相关文章推荐
怎么用javascript进行拖拽
Jul 20 Javascript
关于viewport,Ext.panel和Ext.form.panel的关系
May 07 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
Oct 28 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
Oct 14 Javascript
Input文本框随着输入内容多少自动延伸的实现
Feb 15 Javascript
js实现时间轴自动排列效果
Mar 09 Javascript
JavaScript 巧学巧用
May 23 Javascript
基于Cookie常用操作以及属性介绍
Sep 07 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
Oct 25 Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 Javascript
layui点击按钮页面会自动刷新的解决方案
Oct 25 Javascript
如何修改Vue打包后文件的接口地址配置的方法
Apr 22 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简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
jquery JSON的解析方式
2009/07/25 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
Python过滤列表用法实例分析
2016/04/29 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
Python程序暂停的正常处理方法
2019/11/07 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
2015年读书月活动总结
2015/03/26 职场文书
董事长开业致辞
2015/07/29 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python