谈谈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 相关文章推荐
基于jquery实现控制经纬度显示地图与卫星
May 20 Javascript
Highcharts 非常实用的Javascript统计图demo示例
Jul 03 Javascript
用jquery写的菜单从左往右滑动出现
Apr 11 Javascript
一个不错的字符串转码解码函数(自写)
Jul 31 Javascript
jQuery中:text选择器用法实例
Jan 03 Javascript
JS模拟按钮点击功能的方法
Dec 22 Javascript
微信小程序 保留小数(toFixed)详细介绍
Nov 16 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
Dec 22 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
Apr 01 Javascript
AngularJS  ng-repeat遍历输出的用法
Jun 19 Javascript
AngularJS实现的锚点楼层跳转功能示例
Jan 02 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 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之Smarty模板使用方法示例详解
2014/07/08 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
php关联数组快速排序的方法
2015/04/17 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
django批量导入xml数据
2016/10/16 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
在Python中实现字典反转案例
2020/12/05 Python
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
《雨点》教学反思
2014/02/12 职场文书
会计学毕业生求职信
2014/06/25 职场文书
2014年教研室工作总结
2014/12/06 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
JavaScript实现音乐播放器
2022/08/14 Javascript