谈谈JS中的!!


Posted in Javascript onDecember 07, 2017

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

var a;
var b=!!a;

a默认是undefined。!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判断提供便利。

因为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。

JS中的“!!”

var o={flag:true}; 
 var test=!!o.flag;//等效于var test=o.flag||false; alert(test);

由于对null与undefined用!操作符时都会产生true的结果,

所以用两个感叹号的作用就在于,

如果明确设置了o中flag的值(非 null/undefined/0""/等值),自然test就会取跟o.flag一样的值;

如果没有设置,test就会默认为false,而不是 null或undefined。

总结

以上所述是小编给大家介绍的JS中的!!,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
理解JavaScript的caller,callee,call,apply
Apr 28 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
May 21 Javascript
javascript 获取元素样式必杀技
May 04 Javascript
js 判断各种数据类型的简单方法(推荐)
Aug 29 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
Nov 03 Javascript
AngularJS实现select的ng-options功能示例
Jul 12 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
Feb 11 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
vue resource发送请求的几种方式
Sep 30 Javascript
Vue v-model组件封装(类似弹窗组件)
Jan 08 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
Dec 07 #Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
Dec 07 #Javascript
jquery学习笔记之无new构建详解
Dec 07 #jQuery
利用Node.js检测端口是否被占用的方法
Dec 07 #Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 #Javascript
Vue通过URL传参如何控制全局console.log的开关详解
Dec 07 #Javascript
Vue中添加手机验证码组件功能操作方法
Dec 07 #Javascript
You might like
用在PHP里的JS打印函数
2006/10/09 PHP
Windows下的PHP5.0详解
2006/11/18 PHP
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
python代码过长的换行方法
2018/07/19 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
python读取图像矩阵文件并转换为向量实例
2020/06/18 Python
python实现学生管理系统开发
2020/07/24 Python
上班上网检讨书
2014/01/29 职场文书
优秀家长事迹材料
2014/05/17 职场文书
教室标语大全
2014/06/21 职场文书
三年级学生期末评语
2014/12/26 职场文书
校车安全管理责任书
2015/05/11 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL