js中!!的用法(双感叹号)
在javascript代码中经常会见到!!的情况,本文即以实例形式较为深入的分析javascript中2个感叹号的用法。分享给大家供大家参考之用。具体分析如下:
javascript中的!!是逻辑"非非",即是在逻辑“非”的基础上再"非"一次。通过!或!!可以将很多类型转换成bool类型,再做其它判断。
使用javascript时,有时会在变量前面加上两个感叹号,这样做表示什么含义呢?Javascript中,!表示运算符“非”,如果变量不是布尔类型,会将变量自动转化为布尔类型,再取非,那么用两个!!就可以将变量转化为对应布尔值。
一、应用场景:判断一个对象是否存在
假设有这样一个json对象:
{ color: "#E3E3E3", "font-weight": "bold" }
需要判断是否存在,用!!再好不过。
如果仅仅打印对象,无法判断是否存在:
var temp = { color: "#A60000", "font-weight": "bold" };
alert(temp);
结果:[object: Object]
如果对json对象实施!或!!,就可以判断该json对象是否存在:
var temp = { color: "#A60000", "font-weight": "bold" };
alert(!temp);
*结果:*false
var temp = { color: "#A60000", "font-weight": "bold" };
alert(!!temp);
结果:true
二、通过!或!!把各种类型转换成bool类型的惯例
1.对null的"非"返回true
var temp = null;
alert(temp);
结果:null
var temp = null;
alert(!temp);
结果:true
var temp = null;
alert(!!temp);
结果:false
2.对undefined的"非"返回true
var temp;
alert(temp);
结果:undefined
var temp;
alert(!temp);
结果:true
var temp;
alert(!!temp);
结果:false
3.对空字符串的"非"返回true
var temp="";
alert(temp);
结果:空
var temp="";
alert(!temp);
结果:true
var temp="";
alert(!!temp);
结果:false
4.对非零整型的"非"返回false
var temp=1;
alert(temp);
结果:1
var temp=1;
alert(!temp);
结果:false
var temp=1;
alert(!!temp);
结果:true
5.对0的"非"返回true
var temp = 0;
alert(temp);
结果:0
var temp = 0;
alert(!temp);
结果:true
var temp = 0;
alert(!!temp);
结果:false
6.对字符串的"非"返回false
var temp="ab";
alert(temp);
结果:ab
var temp="ab";
alert(!temp);
结果:false
var temp="ab";
alert(!!temp);
结果:true
7.对数组的"非"返回false
var temp=[1,2];
alert(temp);
结果:1,2
var temp=[1,2];
alert(!temp);
结果:false
var temp=[1,2];
alert(!!temp);
结果:true
js中!!的用法(双感叹号)相关推荐
- js 中遇到英文双引号后端无法正常存储的解决方法
js 中遇到英文双引号后端无法正常存储的解决方法 当在前端js输入框中要输入英文双引号的时候比如,"你好,北京",这个时候后端获取不到前端传输的数据.工作中遇到此文题思考很久,查资 ...
- js中prototype用法(转)
JavaScript能够实现的面向对象的特征有: ·公有属性(public field) ·公有方法(public Method) ·私有属性(private field) ·私有方法(private ...
- js中every用法_JS中every()和some()的用法
every()与some()方法都是JS中数组的迭代方法. every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true. some()是对数组中每一项运行给定函数,如果 ...
- Js中Promise用法
promise是用来解决Js中的异步问题的.基本结构如下: function a() {return new Promise((resolve, reject) => {//dosomethin ...
- js中typeof用法详细介绍
本文章来介绍在js使用中的一个函数typeof用法, typeof 运算符把类型信息当作字符串返回,包括有大家常有变量类型. typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可 ...
- js中 slice 用法用法全解析
slice 工作原理 在深入研究一些更高级的用法之前,让我们看一下 slice 方法的基础知识.如MDN文档, slice 是数组上的一个方法,它最多有两个参数: arr.slice([begin[, ...
- js中every用法_every方法
确定数组的所有成员是否满足指定的测试. ## 语法 ~~~ array1.every(callbackfn[, thisArg]) ~~~ ## 参数 |参数|定义| |--|--| |array1| ...
- js中every用法_every方法怎么使用
JavaScript中的every()方法检查数组中的所有元素并执行函数,如果函数在任何数组循环中返回false并且不检查剩余元素,则此循环退出.数组没有值,every()方法不会执行.它也不会改变原 ...
- js中setAttribute用法详解
jssetAttribute基本用法 element.setAttribute(attributename,attributevalue) setAttribute() 方法添加指定的属性,并为其赋指 ...
最新文章
- HDU——1106排序(istringstream的使用、STLvector练习)
- 搭建服务器环境 安装jdk、mysql、Tomcat 以及配置https 记录
- 下面关于表单的叙述错误的是_下面是关于表单数据环境的叙述,其中错误的是A.可以在数据环境中加入与表单操作有关的表B.数据环...
- Ubuntu LAMP
- 华为云网络覆盖全球2500+站点,打造高品质、低成本接入体验
- JVM垃圾收集和优化
- 飞鸽传书整个逻辑盲写,不做测试
- 如何简单快速的了解区块链技术(结尾有惊喜)
- 《好好学Java 从零基础到项目实战》姗姗而来
- 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。...
- “不会Linux,会有什么影响?”资深程序员:基本等于自废武功!
- poj3557 Map Generator
- bootstrap自定义分页
- ffmpeg之H265解码
- python传奇自动打怪脚本_大漠传奇自动打怪源码分享
- Forbidden什么意思
- GNU.texi文件转换成.HTML文件
- SQL 修改表的常用命令
- js实现点击按钮,弹出新窗口
- QGIS二次开发:鼠标在地图上移动时,状态栏显示鼠标所在位置经纬度
热门文章
- Mysql分析-profile详解(转http://blog.csdn.net/ty_hf/article/details/54895026)
- 房地产行业软件ApartmentSales开源版发布
- Ubuntu-内核安装及版本切换
- 密码标准文档下载网站
- java获取类加载器
- 查找字符串'10,A,B' 中逗号','出现的次数cnt
- 技术指标验证试验之MACD
- java WEB调用秒嘀科技短信验证接口(实现短信验证登录)
- python用DataFrame筛选含有某些字段的行(contains和isin)| 含有nan的行
- Google Play商店面向用户推出积分奖励计划,可兑换应用和商品