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 相关文章推荐
JavaScript 判断判断某个对象是Object还是一个Array
Jan 28 Javascript
Kibo 用于处理键盘事件的Javascript工具库
Oct 28 Javascript
jQuery代码优化 选择符篇
Nov 01 Javascript
解析js原生方法创建表格效率测试
Jul 08 Javascript
JS实现跟随鼠标闪烁转动色块的方法
Feb 26 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
JS实现列表页面隔行变色效果
Mar 25 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
详解使用React全家桶搭建一个后台管理系统
Nov 04 Javascript
laypage.js分页插件使用方法详解
Jul 27 Javascript
JavaScript缺少insertAfter解决方案
Jul 03 Javascript
Vue自定义组件双向绑定实现原理及方法详解
Sep 03 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python获取apk文件URL地址实例
2013/11/01 Python
python解析xml文件操作实例
2014/10/05 Python
简单的Python2.7编程初学经验总结
2015/04/01 Python
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
高中生学习生活的自我评价
2013/10/09 职场文书
污水厂厂长岗位职责
2014/01/04 职场文书
英文产品推荐信
2015/03/27 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS