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 相关文章推荐
jQuery1.6 使用方法一
Nov 23 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
Mar 17 Javascript
快速学习jQuery插件 Form表单插件使用方法
Dec 01 Javascript
JS实现消息来时让网页标题闪动效果的方法
Apr 20 Javascript
jQuery Mobile动态刷新页面样式的实现方法
May 28 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
Feb 21 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
Aug 15 Javascript
js操作table中tr的顺序实现上移下移一行的效果
Nov 22 Javascript
Node.js API详解之 assert模块用法实例分析
May 26 Javascript
JavaScript原型链详解
Nov 07 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
PHP生成静态页
2006/11/25 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python OS模块常用函数说明
2015/05/23 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
Python选课系统开发程序
2016/09/02 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
python中rb含义理解
2020/06/18 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
《美丽的彩虹》教学反思
2014/02/25 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
硕士学位申请报告
2015/05/15 职场文书
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python