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 相关文章推荐
5个javascript的数字格式化函数分享
Dec 07 Javascript
JavaScript的21条基本知识点
Mar 04 Javascript
javascript实现俄罗斯方块游戏的思路和方法
Apr 27 Javascript
node.js中 stream使用教程
Aug 28 Javascript
canvas的神奇用法
Feb 03 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
Sep 07 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
create-react-app修改为多页面支持的方法
May 17 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
Jan 25 Javascript
jquery分页优化操作实例分析
Aug 23 jQuery
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
Nov 14 Javascript
javascript事件循环event loop的简单模型解释与应用分析
Mar 14 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错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
php中error与exception的区别及应用
2014/07/28 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
javascript创建动态表单的方法
2015/07/25 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
jQuery中实现text()的方法
2019/04/04 jQuery
tsconfig.json配置详解
2019/05/17 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
心理健康教育制度
2014/01/27 职场文书
大学生活动策划方案
2014/02/10 职场文书
六查六看剖析材料
2014/02/15 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书