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简单的表格添加行和删除行操作示例
Mar 31 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
Oct 27 Javascript
基于javascript实现动态显示当前系统时间
Jan 28 Javascript
javascript每日必学之封装
Feb 23 Javascript
JS使用单链表统计英语单词出现次数
Jun 16 Javascript
深入理解js generator数据类型
Aug 16 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
Apr 01 Javascript
jquery实现的分页显示功能示例
Aug 23 jQuery
解决vue cli使用typescript后打包巨慢的问题
Sep 30 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
Aug 07 Javascript
Vue-cli4 配置 element-ui 按需引入操作
Sep 11 Javascript
如何理解Vue前后端数据交互与显示
May 10 Vue.js
原生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 array的学习笔记
2012/05/10 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
React Native 环境搭建的教程
2017/08/19 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
低版本中Python除法运算小技巧
2015/04/05 Python
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
浅析Python编写函数装饰器
2016/03/18 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
对TensorFlow中的variables_to_restore函数详解
2018/07/30 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
python实现吃苹果小游戏
2020/03/21 Python
python3.4中清屏的处理方法
2020/07/06 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
物理专业本科生自荐信
2014/01/30 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
工作年限证明模板
2014/11/01 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
签字仪式主持词
2015/07/03 职场文书
结婚纪念日感言
2015/08/01 职场文书
商务宴会祝酒词
2015/08/11 职场文书
2019年最新借条范本!
2019/07/08 职场文书