谈谈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+Dhtml:WEB程序员简易开发工具包(预先体验版)
Nov 07 Javascript
javascript入门·对象属性方法大总结
Oct 01 Javascript
用JS写的一个TableView控件代码
Jan 23 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
Sep 06 Javascript
JavaScript数据结构与算法之链表
Jan 29 Javascript
jQuery Easyui 验证两次密码输入是否相等
May 13 Javascript
AngularJS改变元素显示状态
Apr 20 Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
Sep 07 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
May 16 Javascript
JavaScript碰撞检测原理及其实现代码
Mar 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
实用函数2
2007/11/08 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
Javascript的一种模块模式
2010/09/08 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
python监控nginx端口和进程状态
2019/09/06 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
美国休闲服装品牌:Express
2016/09/24 全球购物
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
活动邀请函范文
2014/01/19 职场文书
年终总结会议主持词
2014/03/17 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
保卫工作个人总结
2015/03/03 职场文书
安全生产奖惩制度
2015/08/06 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书