`

Js_“!!”

 
阅读更多

JS中的“!!”

 

经常看到这样的例子:

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。

分享到:
评论

相关推荐

    rtl70.bpl_LIBRA_js_Welcome!_

    "js"当然代表JavaScript,一种广泛用于网页和服务器端的编程语言。"Welcome!"可能是指这个库或程序的欢迎部分,或者是一个示例项目的名称。 描述中提到的"网络上最快的JSON解析库"表明,这个软件或库专注于处理JSON...

    html_css_js_Help-documentation.zip_Help!_html

    这个名为"html_css_js_Help-documentation.zip_Help!_html"的压缩包显然包含了关于这些技术的中文帮助文档,特别是针对初学者或者需要快速查找信息的开发者设计的。 HTML(HyperText Markup Language)是网页内容的...

    gulp_healthx3s_delphi7_Gulp!_

    Gulp则是JavaScript的构建工具,用于自动化处理前端任务,如CSS预处理器编译、JavaScript合并、图片优化等。 【描述】"test en web html login" 提示我们这个项目可能包含了Web应用程序的HTML登录界面的测试。这...

    WelcomeView.rar_Welcome!

    "这个资源可能是一个自定义的Web Inspector欢迎界面,包括一个JavaScript文件(WelcomeView.js)用于实现界面逻辑,以及一个可能与特定版本相关的脚本文件(7.5-7.js)。这个界面可能提供用户友好的引导,帮助他们更...

    arcgis_js_v411_api

    arcgis_js_v411_api ArcGIS API for JavaScript 4.11 To download and install the ArcGIS API for JavaScript and SDK navigate to the ArcGIS API for JavaScript download page and log-in with your Esri global...

    JS_js_

    JavaScript(简称JS)是一种轻量级的脚本语言,广泛应用于网页和网络应用开发,能够对用户交互进行实时响应,实现动态内容更新。在“JS_js_”这个压缩包中,我们可以推测它包含了一些用于教学或练习的JavaScript代码...

    foot-goal-master (1).zip_Goal!_React_foundwma_mother864_react do

    _React_foundwma_mother864_react do"提到了几个关键元素,首先,“foot-goal-master”可能是一个项目的名字,暗示着这个压缩包包含了与足球或目标相关的Web应用程序源代码。"Goal!"可能是应用的核心功能,比如一个...

    省市区的数据javaScript _data.js

    这个里面存放的是省市区的代码,用于省市区三级联动,value是省市区的区行政代码,希望对你有用!

    sudo_canary:(不稳定)sudo_canary是基于discord.js v12库的Discord机器人。 该bot仍在开发中,并且是sudo_!的测试版本。 签出sudo_以获得稳定的版本!

    在本文中,我们将深入探讨Discord.js库、JavaScript编程、以及如何构建和维护一个Discord机器人。 首先,让我们了解**Discord.js**。这是一个流行的Node.js库,用于与Discord API交互,允许开发者创建自定义的...

    完美的js验证网址url

    ### 完美的JS验证网址URL:正则表达式详解 #### 一、引言 在Web开发中,经常需要对用户输入的URL进行合法性验证,确保其格式正确无误。本篇文章将详细介绍一种较为完善的JavaScript URL验证方法及其背后的正则...

    face++SDK.zip_W2L1_html5 canvas_javascript_js_人脸识别

    face++人脸识别Javascript SDK包。

    arcgis_js_v27__api

    arcgis_js_v27__api

    [论坛社区]Discuz! v6.1.0 GBK 内测版_discuz!_6.1.0_sc_gbk.rar

    资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 SpringBoot 毕业设计,SpringBoot 课程...部署环境:Tomcat(建议用 7.x 或者 8.x b版本),maven Spring root vue.js

    js_table分页

    js_table分页,利用js分页 比较简单一些吧!!不用再用sql查询出来分页,但是缺点是影响性能!

    使用three.js_tween.ts搭建的地铁门3D模型,在html中引入了javascript代_3

    使用three.js_tween.ts搭建的地铁门3D模型,在html中引入了javascript代_3DSubwayDoor

    JavaScript权威指南第五版(JavaScript_The_Definitive_Guide_5th.chm)

    看过了,这本书对js介绍的很不错!!!   Java Script是一种功能强大的基于对象的脚本语言。Java Script程序可以直接嵌入HTML页面。与Web浏览器定义的文档对象模型(DOM)一起使用时,JavaScript可以创建动态 HTML(DHTML...

    21点(HTML+CSS+JS).zip

    HTML+CSS+JS实现!!! 21点游戏!!!!HTML+CSS+JS实现!!! 21点游戏!!!!HTML+CSS+JS实现!!! 21点游戏!!!!HTML+CSS+JS实现!!! 21点游戏!!!!HTML+CSS+JS实现!!! 21点游戏!!!!...

    jslearning_javascript_

    JavaScript,简称JS,是一种广泛应用于Web开发的轻量级、解释型编程语言,以其灵活性和强大的功能深受开发者喜爱。在"jslearning_javascript_"这个压缩包中,包含了一个名为"jslearning.js"的文件,我们可以从这个...

    windbg_js_scripts:玩WinDbg JS API的玩具脚本

    WinDbg JavaScript脚本作为WinDbg画廊安装克隆存储库 C:> git clone https://github.com/hugsy/windbg_js_scripts在windbg_js_scripts\config.xml ,编辑Setting Name="LocalCacheRootFolder"以反映存储库的本地路径...

Global site tag (gtag.js) - Google Analytics