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 相关文章推荐
科讯商业版中用到的ajax空间与分页函数
Sep 02 Javascript
javascript 函数调用规则
Aug 26 Javascript
简短几句 通俗解释javascript的闭包
Jan 17 Javascript
移动适配的几种方案(三种方案)
Nov 25 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 Javascript
ionic2懒加载配置详解
Sep 01 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
Vue CLI3基础学习之pages构建多页应用
Jun 02 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
Node.js Domain 模块实例详解
Mar 18 Javascript
Vue实现随机验证码功能
Dec 29 Vue.js
原生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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
php数组的概述及分类与声明代码演示
2013/02/26 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
Python的Flask框架与数据库连接的教程
2015/04/20 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
美国网上订购鲜花:FTD
2016/09/23 全球购物
美容师的职业规划书
2013/12/27 职场文书
机关门卫制度
2014/02/01 职场文书
个人委托书格式
2014/04/04 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
面试通知短信
2015/04/20 职场文书
董事会决议范本
2015/07/01 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL