经常看到这样的例子:

vara;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的结果,所以用两个感叹号的作用就在于将这些值转换为“等价”的布尔值;

再来看看:

varfoo;

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中双叹号!!作用示例介绍

    !!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false; 经常看到这样的例子: var a: var b=!!a; a默认是undefined.!a是 ...

  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. LDAP autofs挂载 swap交换空间
  2. 【手机游戏开发优化篇】详解手游[体积]及[运行内存]的优化篇!
  3. linux parallel 命令,Linux 并行处理神器 GNU Parallel 简明教程
  4. 两台邮件服务器共用一个公网地址,两个不同域邮件服务器的互通
  5. 学生每日计划表_学霸宅家都干什么?浙大学生近700份居家作息计划表泄露秘密...
  6. Linux (Ubuntu) 命令
  7. 参考文献格式自动生成器
  8. 测试用例设计方法(2)
  9. HTML5中litle标签的作用,Litle是什么意思
  10. Redis设计与实现 -- 浅谈Redis持久化
  11. Python 自动化教程(2) : Excel自动化:使用pandas库
  12. 我眼中的匈牙利命名法
  13. 计算机科学 名言,计算机科学名人名言.docx
  14. wireshark抓包vx ip
  15. 学习第一天——ipfs安装与使用
  16. 程序员跳槽有一份好的简历,offer让你拿到手软
  17. 在电脑上开启网络校时服务
  18. 你相信吗?黑客通过浏览器也能控制你的电脑
  19. 小车c语言实训报告,循迹小车实训报告.doc
  20. YUV YPbPr YCbCr CCIR 601 CCIR 656

热门文章

  1. 欧姆龙cp1hum读保护解密步骤_欧姆龙PLC的NJ系列NJ产品功能介绍
  2. vue animation css实现左右折叠面板
  3. nvme通用驱动_对领域驱动设计的理解与实践
  4. 程序员如何快速成长为IT精英
  5. 值得一谈的鸿蒙2.0,赶紧撸一下hello world
  6. Autorize插件的使用方法
  7. html5表单与PHP交互
  8. Jquery中如何获取元素的文本,值,属性和内容
  9. 2019.7.16考试总结
  10. leetcode-92-反转链表②