JavaScript中双叹号!!作用示例介绍


Posted in Javascript onSeptember 21, 2014

!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;

经常看到这样的例子:

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 相关文章推荐
各种常用浏览器getBoundingClientRect的解析
May 21 Javascript
javascript eval和JSON之间的联系
Dec 31 Javascript
详细讲解JS节点知识
Jan 31 Javascript
JavaScript事件委托技术实例分析
Feb 06 Javascript
jQuery实现当前页面标签高亮显示的方法
Mar 10 Javascript
JavaScript学习笔记之数组求和方法
Mar 23 Javascript
你有必要知道的10个JavaScript难点
Jul 25 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 Javascript
babel的使用及安装配置教程
Feb 22 Javascript
对vue中v-on绑定自定事件的实例讲解
Sep 06 Javascript
Ant Design Pro 下实现文件下载的实现代码
Dec 03 Javascript
原生JavaScript实现合并多个数组示例
Sep 21 #Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
Sep 21 #Javascript
将数字转换成大写的人民币表达式的js函数
Sep 21 #Javascript
判断window.onload是否多次使用的方法
Sep 21 #Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 #Javascript
JS实现清除指定cookies的方法
Sep 20 #Javascript
JS合并数组的几种方法及优劣比较
Sep 19 #Javascript
You might like
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
Javascript中replace()小结
2015/09/30 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
Python变量和字符串详解
2017/04/29 Python
python 接口返回的json字符串实例
2018/03/27 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
python上selenium的弹框操作实现
2020/07/13 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
优质服务口号
2014/06/11 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
电话营销开场白
2015/05/29 职场文书
表彰大会新闻稿
2015/07/17 职场文书
简短清晨问候语
2015/11/10 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
什么是Python装饰器?如何定义和使用?
2022/04/11 Python