JavaScript中双叹号(!!)作用使用攻略_运算攻略教程

JavaScript中双叹号(!!)作用使用攻略

经常看到这样的例子:

JavaScript中双叹号(!!)作用使用攻略_运算攻略教程

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约定规则为

  1. false、undefinded、null、0、”” 为 false
  2. 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。

海计划公众号
(0)
上一篇 2020/03/19 07:12
下一篇 2020/03/19 07:12

您可能感兴趣的内容

  • dowebok使用指南_提供代码、素材、特效、教程、模板等建站服务

    dowebok菜鸟知识 官方网址:http://www.dowebok.com/ 简介描述:提供代码、素材、特效、教程、模板等建站服务 dowebok意为做好网站,为用户提供代码、…

    2020/03/06
  • Js数学对象Math新手入门_对象指南教程

    写在前面:Javascript 中Math和其他对象不同,它具有数学常数和函数的属性和方法。因为它的属性是数学常数,所以不能被改变(可以进行赋值操作,但最后值不变)。Math的方法就是普通函数,调用他们直接用Math.method即可,而无需使用new关键字创造它的实例。JS中的其他对象也有类似这样的方法,但那只占他们的一小部分,而Math的方法全部都是这样

    2020/03/26
  • Yslow小白常识一款很实用的web性能测试插件

    Yslow基础入门 官方网址:http://developer.yahoo.com/yslow/ 简介描述:一款很实用的web性能测试插件 YSlow是Yahoo发布的一款基于Fi…

    2020/03/05
  • 7个Js面试题及回答策略小白攻略_面试小白教程

    不管你是面试官还是求职者,里面的思路都能让你获益匪浅。0.单体应用和微服务架构之间有哪些主要区别,从灵活性和可扩展性的角度来看,哪个是更好选择?解析:这个问题用来评估基础编码知识。答案可以有多种,所以应该注意倾听具体的问题,并尽量全面回答,来展示自己对单体应用与微服务架构的理解。面试官想知道些什么:求职者对编码的熟悉程度求职者对不同构建方法利弊的理解是否具有

    2020/04/03
  • Git命令总结入门基础_命令指南教程

    Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法 创建 git 仓库 初始化 git 仓库mkdir project # 创建项目目录cd project # 进入到项目目录git init # 初始化 git 仓库。此命令会在当前目录新建一个 .git 目录,用于存储 git 仓库的相关信息初始化提交touch README

    2020/03/23
  • css之定位入门指南_布局小白教程

    定位是css当中一种操作html元素布局的方案属性positionstatic:默认值,无特殊定位,对象遵循HTML原则;absolute:绝对定位,将对象从文档流中完全拖离出来,使用left/right/top/bottom等属性相对其最接近的一个并有定位设置的父元素进行绝对定位;如果不存在这样的父对象,则依据网页进行定位,而其层叠通过z-index属性定

    2020/03/24
  • rrule.js使用帮助_用来处理递归规则日历日期的JavaScript库

    rrule.js使用帮助 官方网址:https://jakubroztocil.github.io/rrule GitHub:https://github.com/jakubroz…

    2020/03/11
  • impress.js基础入门教程_基于 CSS3 变换和过渡的页面效果框架,制作制作酷炫 PPT

    impress.js基础入门 官方网址:http://impress.github.io/impress.js/#/bored GitHub:https://github.com/…

    2020/03/05
  • js和jquery设置css的几种方式 基础知识入门_jquery菜鸟教程下载

    一、js设置样式的方法//1. 直接设置style的属性 某些情况用这个设置 !important值无效element.style.height = ’50px’;//2. 直接设置属性(只能用于某些属性,相关样式会自动识别)element.setAttribute(‘height’,50);element.setAttribute(‘height’,50

    2020/03/22
  • 写给程序员的 HR 面试指南小白基础_面试使用说明

    首先这个问题是一个骨灰级问题,面试必问,很有必要认真探讨一下这个问题的答案。个人觉得可以从三方面来考虑回答(寻找新平台提升自己和表现出忠诚度和责任感) 在寻找新机会或新的平台首先,切记不要诋毁你的老东家。你应该把你的离职原因集中表述在“寻找新机会或新的平台”以及尝试在新的岗位上提升自己。当然,这样的回答对于一般职位的应聘者来说不会造成减分,但却不足以成为加

    2020/03/29
  • 程序员如何赚钱使用说明_程序员使用攻略

    作为一个程序员,时常都会想以后自己干不动的时候该怎样办?1. 努力工作每天上班都认认真真,这样就会有好的绩效,年终奖就会多一点。可能公司坑一点的话,年底是没有年终奖的。你不满工资,向上面提出要涨工资。老板看重你的能力,给你涨,一次给你调个1000。可能你这一年就只能调个1000,想要多要点,老板说这是公司制度,每次涨幅是有规定的,给你调1000已经很重视你了

    2020/04/03
  • 前端组件/库打包利器rollup使用与配置实战基础入门_rollup入门基础知识

    目前主流的前端框架vue和react都采用rollup来打包,为了探索rollup的奥妙,接下来就让我们一步步来探索,并基于rollup搭建一个库打包脚手架,来发布自己的库和组件。前言
    写rollup的文章是因为笔者最近要规范前端开发的业务流程和架构,并提供内部公有组件库和工具库供团队使用。在查阅大量资料并对比了webpack和rollup的优缺点之后,最终

    2020/03/23
  • react依赖node吗?入门知识_react基础入门

    学习React前提必须拥有Javascript和DOM知识。这个门槛已经很低了。但是很多的教程里面都提到npm,nodejs.要先安装nodejs。但是react并不依赖node。注意:学习React要安装nodejs,主要的原因不是React依赖nodejs,而是webpack依赖nodejs.react常用工具介绍:1、nodejs:node.js是一个

    2020/03/20
  • web开发-前后端分离原理入门百科_web菜鸟知识

    前言前后端分离已成为互联网项目开发的业界标准使用方式,通过Nginx+Tomcat的方式(也可以中间加一个Node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。核心思想是前端HTML页面通过A

    2020/03/31
  • 腾讯云活动、优惠券小白入门_云服务器,云数据库,CDN,域名注册等多种云计算服务

    腾讯云活动、优惠券小白入门 简介描述:云服务器,云数据库,CDN,域名注册等多种云计算服务 腾讯云于2013年09 月面向全社会开放、云安全上线,为全球客户提供领先的云计算、大数据…

    2020/03/11
  • 微服务架构之「 容器技术 」入门教程_Docker菜鸟指南

    现在一聊到容器技术,大家就默认是指 Docker 了。但事实上,在 Docker 出现之前,PaaS社区早就有容器技术了,以 Cloud Foundry、OpenShift 为代表的就是当时的主流。那为啥最终还是 Docker 火起来了呢?因为传统的PaaS技术虽然也可以一键将本地应用部署到云上,并且也是采用隔离环境(容器)的形式去部署,但是其兼容性非常的

    2020/03/24