`

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...

    数字信号处理Javascript_dsp.js_Digital_Signal_Processing

    数字信号处理Javascript_dsp.js_Digital_Signal_Processing_for_Javascript_dsp.js.zip

    html_css_js_Help-documentation.zip_Help!_html

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

    js_of_ocaml, 编译器从OCaml到 Javascript.zip

    js_of_ocaml, 编译器从OCaml到 Javascript Js_of_ocaml ( jsoo )Js_of_ocaml是一个编译器从OCaml字节码到 JavaScript 。 它使得在JavaScript环境中运行纯OCaml程序成为可能,如浏览器和 Node.js.它很容易安装和使用

    PHP-groupware.zip_Free!_php groupware css js

    _php groupware css js" 暗示这是一个包含PHP组件的压缩包,特别提到了CSS和JS文件,意味着这个组件可能涉及到前端和后端的交互。"Free!"表明这是一套免费的开源解决方案。 【描述】中的"PHP Group Ware"提示我们这...

    js_keyboard.rar_javascript keyboard_js键盘插件_keyboard js_keyboard.

    这是一款常见的JavaScript 网页软键盘插件,提高输入安全性,可设置是否大写的值,并用正则表达式将前后空格  用空字符串替代,给输入的密码框添加新值,定义当前是否大写的状态等功能,这个小键盘的美化完全基石...

    js_img_preview.rar_ImgPreview.js_JavaScript 导航_jquery preview.js

    JavaScript实现的链接提示效果,实际上内部那个JS文件是jquery的源码。当鼠标划过文字链接时显示对应图片,目前,很多网址大全网站中加入有这项功能,使网址导航更具人性化,当鼠标滑过网址名称的时候,立即显示出该...

    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验证方法及其背后的正则...

    arcgis_js_v316_sdk.zip

    ArcGIS api for JavaScript官方sdk离线帮助文档3.16版本 arcgis_js_v316_sdk.zip MD5: 9a839a49d41940871c2ae7e9fcef2c1c

    face++SDK.zip_W2L1_html5 canvas_javascript_js_人脸识别

    face++人脸识别Javascript SDK包。

    javascript_分层概念_JS技术理念问题PPT版

    javascript_分层概念_JS技术理念问题PPT版

    一键部署ChatGPT私有代理,由Next.js提供支持_JavaScript_CSS_下载.zip

    一键部署ChatGPT私有代理,由Next.js提供支持_JavaScript_CSS_下载.zip

    arcgis_js_v320_sdk.zip

    arcgis_js_v320_sdk.zip ArcGIS api for JavaScript官方sdk离线帮助文档3.20正式版本 MD5: 4925842dc50547b49c0036858435af71

Global site tag (gtag.js) - Google Analytics