谈谈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动画效果类封装代码
Aug 28 Javascript
固定表格行列(expression)在IE下适用
Jul 25 Javascript
javascript异步编程的4种方法
Feb 19 Javascript
JS简单实现多级Select联动菜单效果代码
Sep 06 Javascript
javascript性能优化之事件委托实例详解
Dec 12 Javascript
JS中JSON对象和String之间的互转及处理技巧
Apr 06 Javascript
jQuery基础_入门必看知识点
Jul 04 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
Jul 12 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
Oct 05 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 Javascript
JS中使用media实现响应式布局
Aug 04 Javascript
vue实现word,pdf文件的导出功能
Jul 31 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网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
JavaScript基本对象
2007/01/11 Javascript
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
js时间控件只显示年月
2017/01/08 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
使用vue构建一个上传图片表单
2017/07/04 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
python生成随机红包的实例写法
2019/09/02 Python
简单了解django文件下载方式
2020/02/10 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
竞聘演讲稿范文
2014/01/12 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
小学生作文评语大全
2014/04/21 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
大学生标准自荐书
2014/06/15 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
2014年法院工作总结
2014/11/24 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
敬老院活动感想
2015/08/07 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书