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 相关文章推荐
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
Apr 07 Javascript
JavaScript触发onScroll事件的函数节流详解
Dec 14 Javascript
js+html5实现页面可刷新的倒计时效果
Jul 15 Javascript
JS倒计时实例_天时分秒
Aug 22 Javascript
vue组件实现文字居中对齐的方法
Aug 23 Javascript
微信小程序url传参写变量的方法
Aug 09 Javascript
创建Vue项目以及引入Iview的方法示例
Dec 03 Javascript
微信小程序设置滚动条过程详解
Jul 25 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 Javascript
vue实现评论列表功能
Oct 25 Javascript
vue 项目软键盘回车触发搜索事件
Sep 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中call_user_func_array()函数的用法演示
2012/02/05 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
简单实现python数独游戏
2018/03/30 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python 美化输出信息的实例
2018/10/15 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
python实现ip代理池功能示例
2019/07/05 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
jupyter 添加不同内核的操作
2021/02/06 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
美术教师岗位职责
2014/03/18 职场文书
终止合同协议书
2014/04/17 职场文书
师德师风整改措施
2014/10/24 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
教师调动申请报告
2015/05/18 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python