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 30 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
Aug 07 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
Dec 25 Javascript
功能强大的jquery.validate表单验证插件
Nov 07 Javascript
浅谈gulp创建完整的项目流程
Dec 20 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
Jul 02 Javascript
详解node.js的http模块实例演示
Jul 12 Javascript
解决axios post 后端无法接收数据的问题
Oct 29 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
Jun 11 Javascript
ant design pro中可控的筛选和排序实例
Nov 17 Javascript
vue实现防抖的实例代码
Jan 11 Vue.js
JS代码编译器Monaco使用方法
Jun 11 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
sony ICF-2010 拆解与改装
2021/03/02 无线电
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
详解Vue的七种传值方式
2021/02/08 Vue.js
windows下安装python paramiko模块的代码
2013/02/10 Python
python函数返回多个值的示例方法
2013/12/04 Python
深入学习Python中的装饰器使用
2016/06/20 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
师范大学音乐表演专业求职信
2013/10/23 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
学校火灾防控方案
2014/06/09 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
Django 实现jwt认证的示例
2021/04/30 Python