谈谈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 相关文章推荐
cnblogs csdn 代码运行框实现代码
Nov 02 Javascript
11款新鲜的jQuery插件[附所有demo下载]
Jan 24 Javascript
js控制表单奇偶行样式的简单方法
Jul 31 Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
Sep 25 Javascript
倒记时60刷新网页的js代码
Feb 18 Javascript
javascript学习笔记(四)function函数部分
Sep 30 Javascript
js验证上传图片的方法
May 12 Javascript
五种js判断是否为整数类型方式
Dec 03 Javascript
JavaScript提高加载和执行效率的方法
Feb 03 Javascript
JS对象的深度克隆方法示例
Mar 16 Javascript
深入了解JavaScript 防抖和节流
Sep 12 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服务器页面间跳转实现方法
2012/08/02 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
brook javascript框架介绍
2011/10/10 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
express框架下使用session的方法
2019/07/31 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Python日期时间Time模块实例详解
2019/04/15 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
Python如何测试stdout输出
2020/08/10 Python
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
什么是属性访问器
2015/10/26 面试题
军训 自我鉴定
2014/02/03 职场文书
创业计划书如何编写
2014/02/06 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
自我检讨报告
2015/01/28 职场文书
特此通知格式
2015/04/27 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
个人合作协议范本
2015/08/06 职场文书
六年级语文教学反思
2016/03/03 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电