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


Posted in Javascript onApril 10, 2014

经常看到这样的例子:

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 相关文章推荐
对JavaScript的eval()中使用函数的进一步讨论
Jul 26 Javascript
js 控制图片大小核心讲解
Oct 09 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
Sep 15 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
Dec 04 Javascript
jQuery实现布局高宽自适应的简单实例
May 28 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
Aug 13 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
Sep 25 Javascript
koa-router路由参数和前端路由的结合详解
May 19 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
May 31 Javascript
JQuery实现折叠式菜单的详细代码
Jun 03 jQuery
浅谈vue项目,访问路径#号的问题
Aug 14 Javascript
JavaScript的一些小技巧分享
Jan 06 Javascript
js实现图片旋转的三种方法
Apr 10 #Javascript
javascript:void(0)的问题使用探讨
Apr 10 #Javascript
ajax请求乱码的解决方法(中文乱码)
Apr 10 #Javascript
php的文件上传入门教程(实例讲解)
Apr 10 #Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
Apr 10 #Javascript
javascript的propertyIsEnumerable()方法使用介绍
Apr 09 #Javascript
常见的原始JS选择器使用方法总结
Apr 09 #Javascript
You might like
老照片 - 几十年前的收音机与人
2021/03/02 无线电
深入php多态的实现详解
2013/06/09 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
js实现聊天对话框
2020/02/08 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
python list转矩阵的实例讲解
2018/08/04 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
365 Tickets英国:全球景点门票
2019/07/06 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
护士求职信范文
2014/05/24 职场文书
创文明城市标语
2014/06/16 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
出纳岗位职责
2015/01/31 职场文书
质量保证书格式模板
2015/02/27 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
借条格式范本
2015/05/25 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书