谈谈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+xml实现简单图片轮换(只支持IE)
Dec 23 Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
Sep 17 Javascript
Jquery中request和request.form和request.querystring的区别
Nov 26 Javascript
Ionic如何创建APP项目
Jun 03 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
Jun 09 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
Sep 21 Javascript
js仿支付宝多方框输入支付密码效果
Sep 27 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
JS利用prototype给类添加方法操作详解
Jun 21 Javascript
Vue获取页面元素的相对位置的方法示例
Feb 05 Javascript
Vue仿Bibibili首页的问题
Jan 21 Vue.js
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中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
Php多进程实现代码
2018/05/07 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
PHP高级工程师面试问题推荐
2013/01/18 面试题
大学生期末自我鉴定
2014/02/01 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
情人节寄语大全
2014/04/11 职场文书
商业门面租房协议书
2014/11/25 职场文书
检讨书范文1000字
2015/01/28 职场文书
暑假安全保证书
2015/02/28 职场文书
人生遥控器观后感
2015/06/11 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
Python Pandas常用函数方法总结
2021/06/15 Python
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers