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 相关文章推荐
jscript之Read an Excel Spreadsheet
Jun 13 Javascript
jquery 取子节点及当前节点属性值
Jul 25 Javascript
JavaScript中获取高度和宽度函数总结
Oct 08 Javascript
浅析Javascript中“==”与“===”的区别
Dec 23 Javascript
js实现仿QQ秀换装效果的方法
Mar 04 Javascript
javascript正则表达式总结
Feb 29 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
Apr 11 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
Sep 29 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
Nov 02 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
May 21 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
Aug 16 Javascript
Nuxt页面级缓存的实现
Mar 09 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封装的HttpClient类用法实例
2015/06/17 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
回调函数的意义以及python实现实例
2017/06/20 Python
python3爬虫怎样构建请求header
2018/12/23 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
python中可以声明变量类型吗
2020/06/18 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
普师专业个人自荐信范文
2013/11/26 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
创业计划书之农家乐
2019/10/09 职场文书
小程序实现文字循环滚动动画
2021/06/14 Javascript
前端JavaScript大管家 package.json
2021/11/02 Javascript
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python