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 相关文章推荐
JS 巧妙获取剪贴板数据 Excel数据的粘贴
Jul 09 Javascript
Function.prototype.bind用法示例
Sep 16 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
Feb 13 Javascript
js实现div层缓慢收缩与展开的方法
May 11 Javascript
基于JS模仿windows文件按名称排序效果
Jun 29 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
Aug 31 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
Sep 05 Javascript
javascript将list转换成树状结构的实例
Sep 08 Javascript
JS设计模式之数据访问对象模式的实例讲解
Sep 30 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
Jan 09 Javascript
使用 Vue 实现一个虚拟列表的方法
Aug 20 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
PHP 文件系统详解
2012/09/13 PHP
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
python实现socket端口重定向示例
2014/02/10 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
如何使用python传入不确定个数参数
2020/02/18 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
如何对python的字典进行排序
2020/06/19 Python
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
复古服装:RetroStage
2019/05/10 全球购物
毕业自我评价范文
2013/11/17 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
格林童话读书笔记
2015/06/30 职场文书
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL