谈谈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插件扩展识别浏览器内核与外壳的类型和版本的实现代码
Oct 22 Javascript
jquery复选框checkbox实现删除前判断
Apr 20 Javascript
利用JQuery写一个简单的异步分页插件
Mar 07 Javascript
JavaScript 函数节流详解及方法总结
Feb 09 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
Feb 21 Javascript
微信小程序 下拉菜单的实现
Apr 06 Javascript
javascript 初学教程及五子棋小程序的简单实现
Jul 04 Javascript
vue编译打包本地查看index文件的方法
Feb 23 Javascript
微信小程序scroll-x失效的完美解决方法
Jul 18 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 Javascript
Vue的属性、方法、生命周期实例代码详解
Sep 17 Javascript
vue单文件组件无法获取$refs的问题
Jun 24 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
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
php你的验证码安全码?
2007/01/02 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
pandas中去除指定字符的实例
2018/05/18 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
精选奢华:THE LIST
2019/09/05 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
个人求职信范文分享
2014/01/06 职场文书
班主任工作经验材料
2014/02/02 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
机械机修工岗位职责
2014/08/03 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL
MySQL添加索引特点及优化问题
2022/07/23 MySQL