在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中!!的用法(双感叹号)相关推荐

  1. js 中遇到英文双引号后端无法正常存储的解决方法

    js 中遇到英文双引号后端无法正常存储的解决方法 当在前端js输入框中要输入英文双引号的时候比如,"你好,北京",这个时候后端获取不到前端传输的数据.工作中遇到此文题思考很久,查资 ...

  2. js中prototype用法(转)

    JavaScript能够实现的面向对象的特征有: ·公有属性(public field) ·公有方法(public Method) ·私有属性(private field) ·私有方法(private ...

  3. js中every用法_JS中every()和some()的用法

    every()与some()方法都是JS中数组的迭代方法. every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true. some()是对数组中每一项运行给定函数,如果 ...

  4. Js中Promise用法

    promise是用来解决Js中的异步问题的.基本结构如下: function a() {return new Promise((resolve, reject) => {//dosomethin ...

  5. js中typeof用法详细介绍

    本文章来介绍在js使用中的一个函数typeof用法, typeof 运算符把类型信息当作字符串返回,包括有大家常有变量类型. typeof 运算符把类型信息当作字符串返回.typeof 返回值有六种可 ...

  6. js中 slice 用法用法全解析

    slice 工作原理 在深入研究一些更高级的用法之前,让我们看一下 slice 方法的基础知识.如MDN文档, slice 是数组上的一个方法,它最多有两个参数: arr.slice([begin[, ...

  7. js中every用法_every方法

    确定数组的所有成员是否满足指定的测试. ## 语法 ~~~ array1.every(callbackfn[, thisArg]) ~~~ ## 参数 |参数|定义| |--|--| |array1| ...

  8. js中every用法_every方法怎么使用

    JavaScript中的every()方法检查数组中的所有元素并执行函数,如果函数在任何数组循环中返回false并且不检查剩余元素,则此循环退出.数组没有值,every()方法不会执行.它也不会改变原 ...

  9. js中setAttribute用法详解

    jssetAttribute基本用法 element.setAttribute(attributename,attributevalue) setAttribute() 方法添加指定的属性,并为其赋指 ...

最新文章

  1. HDU——1106排序(istringstream的使用、STLvector练习)
  2. 搭建服务器环境 安装jdk、mysql、Tomcat 以及配置https 记录
  3. 下面关于表单的叙述错误的是_下面是关于表单数据环境的叙述,其中错误的是A.可以在数据环境中加入与表单操作有关的表B.数据环...
  4. Ubuntu LAMP
  5. 华为云网络覆盖全球2500+站点,打造高品质、低成本接入体验
  6. JVM垃圾收集和优化
  7. 飞鸽传书整个逻辑盲写,不做测试
  8. 如何简单快速的了解区块链技术(结尾有惊喜)
  9. 《好好学Java 从零基础到项目实战》姗姗而来
  10. 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。...
  11. “不会Linux,会有什么影响?”资深程序员:基本等于自废武功!
  12. poj3557 Map Generator
  13. bootstrap自定义分页
  14. ffmpeg之H265解码
  15. python传奇自动打怪脚本_大漠传奇自动打怪源码分享
  16. Forbidden什么意思
  17. GNU.texi文件转换成.HTML文件
  18. SQL 修改表的常用命令
  19. js实现点击按钮,弹出新窗口
  20. QGIS二次开发:鼠标在地图上移动时,状态栏显示鼠标所在位置经纬度

热门文章

  1. Mysql分析-profile详解(转http://blog.csdn.net/ty_hf/article/details/54895026)
  2. 房地产行业软件ApartmentSales开源版发布
  3. Ubuntu-内核安装及版本切换
  4. 密码标准文档下载网站
  5. java获取类加载器
  6. 查找字符串'10,A,B' 中逗号','出现的次数cnt
  7. 技术指标验证试验之MACD
  8. java WEB调用秒嘀科技短信验证接口(实现短信验证登录)
  9. python用DataFrame筛选含有某些字段的行(contains和isin)| 含有nan的行
  10. Google Play商店面向用户推出积分奖励计划,可兑换应用和商品