!!一般用来将后面的表达式强制转换为布尔类型的数据(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。

js中双感叹号_JavaScript中双叹号!!作用示例介绍相关推荐

  1. js中双感叹号_JavaScript中双叹号(!!)作用

    经常看到这样的例子: vara:var b=!!a; a默认是undefined.!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判断 ...

  2. swift 中的 感叹号 问号 和 双问号用法详解

    首先介绍一下swift 中的 Optional!  点到 Optional 的头文件可以看到, Optional 其实是个enum,里面有 case None 和 case Some(Wrapped) ...

  3. js 闭包函数 构造函数_JavaScript中的闭包,库里函数和酷抽象

    js 闭包函数 构造函数 In this article, we will talk about closures and curried functions and we'll play aroun ...

  4. js正则贪婪模式_javascript中的正则表达式的贪婪模式和非贪婪模式讲解

    1.贪婪模式: 根据匹配字符串以及表达式尽可能多的进行匹配,成为贪婪匹配模式 例如:/a\d+/ 即可以匹配首字母为a的之后的许多数字,这个不进行限制 或者另外一种方法/a\d{2,}/也可以实现同样 ...

  5. string 字符串中字符无效_JavaScript中的字符串(string)到底是什么?

    通过可见字符建模 把JavaScript中的string当作字符序列来看待是最直观的,虽然这样并不准确. 以下代码示例中的字符串由5个字母和一个感叹号组成: const message = 'Hell ...

  6. java项目中红色感叹号_Eclipse中项目名出现红色感叹号解决方法

    Eclipse中正在使用的项目,项目名那里出现了红色感叹号?怎么去除?下面就随东坡小编一起来看看Eclipse中项目名出现红色感叹号解决方法. 问题原因 工程中classpath中指向的包路径错误 ...

  7. arm中clz指令_JavaScript中带有示例的Math.clz32()方法

    arm中clz指令 JavaScript | Math.clz32()方法 (JavaScript | Math.clz32() Method) Math.clz32() is a function ...

  8. bat替换文件中的字符串_JavaScript 中替换字符串的几种方法

    // 每日前端夜话 第418篇// 正文共:700 字// 预计阅读时间:5 分钟 替换字符串中的文本是 JavaScript 开发中的常见任务.本文研究几种用 replace 和正则表达式替换文本的 ...

  9. 安装好xp系统后没网络连接服务器,本地连接呢?xp系统.设备管理器中显示网卡安装正常.没叹号没问号 爱问知识人...

    倘若在Web服务器中的Windows 2000服务器系统并没有将本地计算机的网络连接功能启用的话,其他任何客户端都是无法与Web服务器保持连接的,这样的话就容易出现Web服务器无法访问的故障现象.因此 ...

最新文章

  1. JAVA面向对象的总结(函数重载与数组)
  2. 中国海上风力发电行业战略调研与投资风险分析报告2022-2028年
  3. Java中的enum枚举类
  4. Python面向对象编程Day 25部分知识点
  5. C#调用百度地图API入门解决BMap未定义问题
  6. Qt 设置textEdit插入文本的字体、大小和颜色
  7. FreeRTOS学习及移植笔记之二:在IAR和STM32F103VET上移植FreeRTOS
  8. css新单位 vw , vh
  9. 计算机网络之网络概述:6、TCP/IP模型和5层参考模型
  10. Python学习:命令行运行,循环结构
  11. 【英语学习】【Level 07】U01 Making friends L4 Meet your new colleague
  12. c语言程序构建,c语言开发环境构建及简单的c程序设计.doc
  13. mysql获取多张表中的数据_mysql之多表查询
  14. |Vijos|NOIP2015|模拟|P1975 扫雷游戏
  15. SuperScan扫描器
  16. 网页聊天室php无数据库_无需数据库的PHP聊天室程序
  17. for循环遍历Set集合时如何判断是否有下一个元素
  18. 平均数 中位数 四分位数 方差 标准差
  19. 计算机键盘怎么换键,电脑键盘快捷键怎么更改
  20. 网页版微信自动群发消息

热门文章

  1. WPF WinAPI 编程详解(四 实例 )
  2. delphi 操作注册表详解
  3. 虚拟机(win11)和云服务器的WarmServer配置缺少MSVCR110.dll
  4. ARMv7和ARMv8中关于内存访问的汇编指令总结对比
  5. php显示服务器域名,php获取服务器域名
  6. 度量学习(Metric Learning)【AMSoftmax、Arcface】
  7. Tranform + Transitions + Animation
  8. Class类 和 class对象(运行时的类型信息)
  9. PI与关系数据库及其他实时数据库对比
  10. Switch 中参数的范围探讨