产业气象站■如何在JavaScript中将数值转换为Boolean
全文共1396字 , 预计学习时长7分钟

文章图片
图源:unsplash
字符串
【产业气象站■如何在JavaScript中将数值转换为Boolean】conststring="string"!!string//trueBoolean(string)//true
数值
constnumber=100!!number//trueBoolean(number)//true
虚值
在JavaScript中 , 有6个虚值 。 如果将其中任何一个字符串转换为Boolean , 它将变为false 。
falseundefinednullNaN0""(emptystring)
任何不为虚值的都会转换为true 。
示例
虚值的应用:
!!false//false!!undefined//false!!null//false!!NaN//false!!0//false!!""//false
虚值在Boolean上下文中的应用:
Boolean(false)//falseBoolean(undefined)//falseBoolean(null)//falseBoolean(NaN)//falseBoolean(0)//falseBoolean("")//false
当心‘false’
constvalue="https://pcff.toutiao.jxnews.com.cn/p/20200409/false"!!value//trueBoolean(value)//true
注意“false”必须写在引号之间 。 虽然是虚值 , 但实际上是一个字符串 。 大多数人都不会在这里中圈套 , 但还是需要随时保持警惕 。

文章图片
图源:digilentin
如何操作该代码
首先!将该值强制转换为Boolean并取反 。 在上下文中,!value将变回虚值 。 所以为了将value恢复成真值 , 将另一个“!”放入操作中 , 因此这里出现了两个! 。
constvalue="https://pcff.toutiao.jxnews.com.cn/p/20200409/string"!value//false!!value//true
速度测试
booleanvs!!
看起来像!!但测试速度比Boolean快 。

文章图片
图源:unsplash
有些人更喜欢Boolean , 因为它更明确 。 但是 , KyleSimpson在《你不知道的JavaScript》中提到 , 这两者都是明确的 。
//better(worksexplicitly):if(!!a){}//alsogreat(worksexplicitly):if(Boolean(a)){}
这里不会给你标准答案 , 你可以按需选择 。 笔者会在个人开发的项目中继续使用!! , 其键入较少而且笔者对这种语法有了解 。
反之 , 如果是作为团队考虑 , 笔者可能会选择Boolean 。 大多数开发人员都能更好地理解这一点 。 无论选择哪一个 , 最重要的是保持代码一致 , 不要换来换去 , 选择一种并坚持下去 。
这更像是一种偏好选择 , 不要剥夺自己理解两种代码的权利 。
避免newBoolean
使用基元而不是对象类型
varstr="str"//AvoidtypeofnewBoolean(str)//object//PreferredtypeofBoolean(str)//booleantypeof!!str//boolean
CJJ.:值得注意的是,newBoolean不是boolean , 而是布尔值的示例 。 基元比较廉价 , 相比对象类型应优先使用 。
CJJ.:newBoolean(str)可以返回对象类型 。 Boolean(str)只返回boolean的原始值 。 笔者猜测Boolean(str)比!!str更快 。 因为这只是一项操作 , 但是浏览器也有可能实施优化 , 以便程序员看到!!他们知道直接将参数转换为boolean原始值(而不是实际执行NOT()连续两次) 。
CJJ.:基元很便宜 , 它们是不可变的 , 因此可以共享引用 , 而不必在实例上保留任何状态 。 要么true要么false 。
但newBoolean(str)是一个对象 。 它有自己的唯一存储地址 , 并且可以保存唯一的内部状态 。 这意味着它不能只保存对不可变单例实例的引用 。 每次运行newBoolean(str)实例化都会产生一个全新的Boolean()对象 。
推荐阅读
- 网闻浣碧为何在白天出嫁,玉娆却在晚上?,甄嬛传中
- 『工人在护理』广西东兰:产业园长出“脱贫菌”
- 昌乐融媒昌乐鄌郚镇:特色产业鼓起村民“钱袋子”
- 天文在线XMM-2599突然沉寂,原因何在?
- 天文在线原因何在?,XMM-2599突然沉寂
- 中国电子报智能传感器能占多大市场?,30万亿元智慧养老产业
- 长沙晚报打造“中国软件开发者产业中心城市”,长沙携手CSDN
- 中国电子报30万亿元智慧养老产业,智能传感器能占多大市场?
- 前瞻网前瞻电动汽车产业全球周报第63期:不留活路!特斯拉降价+增产“组合拳”发力中国市场
- 【澧县官垸镇】央视新闻丨湖南常德:村有增收产业 户有致富门路
