谈谈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 相关文章推荐
浅析XMLHttpRequest的缓存问题
Dec 13 Javascript
js控制鼠标事件移动及移出效果显示
Oct 19 Javascript
node.js中的url.format方法使用说明
Dec 10 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
Jan 07 Javascript
js表单验证实例讲解
Mar 31 Javascript
简单的JS轮播图代码
Jul 18 Javascript
JS使用setInterval实现的简单计时器功能示例
Apr 19 Javascript
javascript、php关键字搜索函数的使用方法
May 29 Javascript
Vue开发Html5微信公众号的步骤
Apr 11 Javascript
javascript自定义日期比较函数用法示例
Jul 22 Javascript
js实现简单页面全屏
Sep 17 Javascript
html中创建并调用vue组件的几种方法汇总
Nov 17 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
通过html表格发电子邮件
2006/10/09 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
Python实现自动签到脚本功能
2020/08/20 Python
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
捐书寄语赠言
2014/01/18 职场文书
人力资源总监工作说明
2014/03/03 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
新闻稿件写作范文
2015/07/18 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
分享7个 Python 实战项目练习
2022/03/03 Python