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检测图片大小的实例
Aug 21 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
Jan 28 Javascript
基于javascript html5实现多文件上传
Mar 03 Javascript
JavaScript的Backbone.js框架入门学习指引
May 07 Javascript
浅析vue数据绑定
Jan 17 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
May 08 jQuery
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
Vue项目中quill-editor带样式编辑器的使用方法
Aug 08 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
Jun 19 Javascript
vue如何进行动画的封装
Sep 26 Javascript
详解webpack 最简打包结果分析
Feb 20 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
May 09 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获取MAC地址的函数代码
2011/09/11 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python中管道用法入门实例
2015/06/04 Python
Python列表切片用法示例
2017/04/19 Python
Python中super函数的用法
2017/11/17 Python
python并发编程之线程实例解析
2017/12/27 Python
详解Django中间件执行顺序
2018/07/16 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
校车安全责任书
2014/08/25 职场文书
烈士陵园观后感
2015/06/08 职场文书
2015年教师节主持词
2015/07/03 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
pytorch 如何使用batch训练lstm网络
2021/05/28 Python