JavaScript中双叹号!!作用示例介绍


Posted in Javascript onSeptember 21, 2014

!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;

经常看到这样的例子:

var a;

var b=!!a;

a默认是undefined。!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判断提供便利。

!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;
因为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。

Javascript 相关文章推荐
网页常用特效代码整理
Jun 23 Javascript
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
jquery实现页面图片等比例放大缩小功能
Feb 12 Javascript
seajs中模块的解析规则详解和模块使用总结
Mar 12 Javascript
jQuery操作cookie方法实例教程
Nov 25 Javascript
jquery实现的判断倒计时是否结束代码
Feb 05 Javascript
vue 2.0路由之路由嵌套示例详解
May 08 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
Jun 13 Javascript
js图片轮播插件的封装
Jul 21 Javascript
微信小程序图片选择区域裁剪实现方法
Dec 02 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
浅谈实现在线预览PDF的几种解决办法
Aug 10 Javascript
原生JavaScript实现合并多个数组示例
Sep 21 #Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
Sep 21 #Javascript
将数字转换成大写的人民币表达式的js函数
Sep 21 #Javascript
判断window.onload是否多次使用的方法
Sep 21 #Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 #Javascript
JS实现清除指定cookies的方法
Sep 20 #Javascript
JS合并数组的几种方法及优劣比较
Sep 19 #Javascript
You might like
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
生成php程序的php代码
2008/04/07 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
PHP的拦截器实例分析
2014/11/03 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
SVM基本概念及Python实现代码
2017/12/27 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
Python 日期与时间转换的方法
2020/08/01 Python
Python中的流程控制详解
2021/02/18 Python
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
后勤副校长自我鉴定
2013/10/13 职场文书
秋季运动会广播稿大全
2014/02/17 职场文书
中秋寄语大全
2014/04/11 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
团员年度个人总结
2015/02/26 职场文书
春节慰问简报
2015/07/21 职场文书