谈谈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 相关文章推荐
JS的Document属性和方法小结
Sep 17 Javascript
js特殊字符过滤的示例代码
Mar 05 Javascript
jQuery实现异步获取json数据的2种方式
Aug 29 Javascript
jQuery的事件委托实例分析
Jul 15 Javascript
第四章之BootStrap表单与图片
Apr 25 Javascript
JavaScript程序中实现继承特性的方式总结
Jun 24 Javascript
Bootstrap警告框(Alert)插件使用方法
Mar 21 Javascript
javascript  删除select中的所有option的实例
Sep 17 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
Mar 17 Javascript
vuex进阶知识点巩固
May 20 Javascript
React router动态加载组件之适配器模式的应用详解
Sep 12 Javascript
vue watch监控对象的简单方法示例
Jan 07 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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
php生成RSS订阅的方法
2015/02/13 PHP
详谈PHP编码转换问题
2015/07/28 PHP
php 问卷调查结果统计
2015/10/08 PHP
php生成curl命令行的方法
2015/12/14 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
PHP 中常量的知识整理
2017/04/14 PHP
ie下动态加态js文件的方法
2011/09/13 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
python利用opencv保存、播放视频
2020/11/02 Python
酒店管理毕业生自荐信
2013/10/24 职场文书
物理力学求职信
2014/02/18 职场文书
建筑设计专业求职自我评价
2014/03/02 职场文书
食品安全演讲稿
2014/09/01 职场文书
就业意向书范本
2015/05/11 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android
vue递归实现树形组件
2022/07/15 Vue.js