javaScript 双感叹号用法
在偶尔看源码的过程中。
看到有些判断的用法是:
var a;
if(!!a){console.log('打印')}
为什么要用两个感叹号(❕)呢?
因为js 是弱类型,单纯用一个! 感叹号去转义可能会发生不必要的错误
这是知乎上的某个比较好的总结
双感叹号才能真正的将他转换成对应的Boolean值,第一个感叹号是将其转化成Boolean类型的值,但是这一操作得到的是其取反以后的值,在进行一次取反运算才能得到其对应真正的布尔值
转换成标准的布尔类型作为判断才比较好
console.log('-----单纯判断')
console.log('{}',{},typeof {})
console.log('[]',[],typeof [])
console.log('""',"",typeof "")
console.log('NaN',NaN,typeof NaN)
console.log('undefined',undefined,typeof undefined)
console.log('null',null,typeof null)
console.log('0',0,typeof 0)
console.log('-----单感叹号')console.log('!{}',!{},typeof !{})
console.log('![]',![],typeof ![])
console.log('!""',!"",typeof !"")
console.log('!NaN',!NaN,typeof !NaN)
console.log('!undefined',!undefined,typeof !undefined)
console.log('!null',!null,typeof !null)
console.log('!0',!0,typeof !0)
console.log('-----双感叹号')console.log('!!{}',!!{},typeof !!{})
console.log('!![]',!![],typeof !![])
console.log('!!""',!!"",typeof !!"")
console.log('!!NaN',!!NaN,typeof !!NaN)
console.log('!!undefined',!!undefined,typeof !!undefined)
console.log('!!null',!!null,typeof !!null)
console.log('!!0',!!0,typeof !!0)
这里是我作的简单分析,只是并没看出太大的区别。
因为本身双感叹号就是完全把本身的字段转换成布尔类型,所以判断会舒服一些。
javaScript 双感叹号用法相关推荐
- nodejs双感叹号用法
根本目的是把undefine.null等值顺便转换为boolean类型.因为取反的过程中会自动给它们进行类型转换 . 当值是非空字符串和非零数字返回true,当值是空字符串.0或者null返回fals ...
- Javascript中!!(两个感叹号,双感叹号)的含义
使用Javascript时,有时会在变量前面加上两个感叹号,这样做表示什么含义呢?Javascript中,!表示运算符"非",如果变量不是布尔类型,会将变量自动转化为布尔类型,再取 ...
- javascript中双感叹号(!!)作用
作为一个前端,在开发过程中经常会遇到!!(双感叹号),那么!!究竟有何含义,以下做详细说明,并罗列了js各数据类型使用后(不含symbol)输出结果(小白可以参照): javascript中'!'是& ...
- 【JS】单感叹号 和 双感叹号 的用法
文章目录 用法 示例 用法 双感叹号!!可以将一个值转换成对应的Boolean值, 第一个感叹号!是将其转化成取反后的Boolean类型的值 第二个感叹号!!是将取反后的Boolean类型的值再进行一 ...
- Kotlin 3. Kotlin 特殊符号的用法:双感叹号!!,问号?,双冒号::
一起来学Kotlin:概念:3. Kotlin 特殊符号的用法:双感叹号!!,问号?,双冒号:: 这里介绍 Kotlin 特殊符号的用法,包括:双感叹号!!,问号?,双冒号::. 文章目录 一起来学K ...
- javascript中in用法介绍
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- js replace不改变原str_总结javascript replace高级用法
详解javascript replace高级用法 在前端与后台交互的时候我们通常都需要将后台传递的数据绑定到html中,这个绑定数据的方式我们通常是使用jQuery或者使用原生的innerHTML进行 ...
- Javascript的this用法
Javascript的this用法 转自:http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html th ...
- JavaScript中foreach()用法及使用的坑
JavaScript中foreach()用法及使用的坑 JavaScript中foreach是用于遍历数组的方法,将遍历到的元素传递给回调函数,遍历的数组不能是空的要有值. foreach 语法: [ ...
最新文章
- 2019 快过去了,自动驾驶发展得怎么样了?
- 踩坑子Module引用aar
- 如何转载别人的CSDN文章
- mpi tcp连接报错_关于WinCC与真实PLC之间的TCP/IP连接问题-工业支持中心-西门子中国...
- Oracle入门(五C)之68个系统变量的key和默认value
- 实践解析丨Rust 内置 trait:PartialEq 和 Eq
- (33)Verilog HDL缩减运算
- Linux学习-Linux 主机上的用户讯息传递
- Latex中参考文献排序
- java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig
- java 分布式同步锁_java编程进阶之路:回归锁的本质,探索分布式锁之源头
- 非线性控制4——李雅普诺夫稳定性理论
- SQL SERVER 2005下载(本地使用)
- 陪你看这世间---识人术
- Win10更新后桌面右键反应慢的问题
- 土木/岩土期刊版面费/审稿费统计列表
- openjudge7939_膨胀的木棍
- android平板值得买吗,最值得买大推荐 全新安卓平板你选谁?
- 因为文件目录存在空格导致kafka运行错误:提示找不到或者无法加载主类错误
- 基础拓扑学笔记(2)——拓扑不变量
热门文章
- php婚礼请帖,结婚请柬上的浪漫句子 婚礼请帖唯美的句子
- 计算机屏幕上的框的英语,电脑打开steam平台弹出一个英文框的解决方法
- SD卡数据读取Altium Designer下载
- 10.Volumetric Shaders
- 红薯淀粉加工设备行业分析
- linux oracle lrm00109,oracle11g ORA-01078 LRM-00109 ORA-12505 错误
- 1-铰链四杆机构仿真分析
- 创意时间轴系列图表(时间轴 时间线 里程碑 历史足迹 大事记)
- jQuery如何动态设置iframe的src属性
- python键盘模拟器 pyautogui