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 相关文章推荐
超清晰的document对象详解
Feb 27 Javascript
用js实现的页面关键字密度查询代码
Dec 27 Javascript
Bootstrap每天必学之导航条
Nov 27 Javascript
详解JavaScript对象序列化
Jan 19 Javascript
关于验证码在IE中不刷新的快速解决方法
Sep 23 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
May 03 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
Nov 25 Javascript
vue2.0结合Element-ui实战案例
Mar 06 Javascript
详解js加减乘除精确计算
Mar 19 Javascript
angular中的post请求处理示例详解
Jun 30 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
Oct 28 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的宝库目录--PEAR
2006/10/09 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
python3.5 tkinter实现页面跳转
2018/01/30 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
搞笑征婚广告词
2014/03/17 职场文书
遗失说明具结保证书
2015/02/26 职场文书
小学英语教学随笔
2015/08/14 职场文书
《颐和园》教学反思
2016/02/19 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL