当前位置: 首页 > 科技观察

JavaScript中如何将值转为布尔值

时间:2023-03-14 16:30:46 科技观察

本文转载自公众号《读芯》(ID:AI_Discovery)JavaScript中如何将值转为布尔值?这篇文章将帮助你!我们往下看~Characterstringconststring='string';!!string;//trueBoolean(string);//truevalueconstnumber=100;!!number;//trueBoolean(number);//JavaScript中的truevirtualvalue,有6个虚拟值。如果这些字符串中的任何一个被转换为布尔值,它将变为假。falseundefinednullNaN0""(emptystring)任何不是false值的值都将转换为true。错误值的应用示例:!!false;//false!!undefined;//false!!null;//false!!NaN;//false!!0;//false!!'';//falsevirtual值在布尔上下文中的应用:Boolean(false);//falseBoolean(undefined);//falseBoolean(null);//falseBoolean(NaN);//falseBoolean(0);//falseBoolean('');//false小心'false'constvalue='false';!!value;//trueBoolean(value);//true注意“false”必须写在引号之间。虽然是一个虚拟值,但它实际上是一个字符串。大多数人不会上当受骗,但还是要时刻保持警惕。图片来源:digilentin是如何操作代码的First!将该值转换为布尔值并将其取反。在上下文中,!value将返回一个虚假值。所以要将值恢复为真,再放一个“!”进入操作,所以这里有两个!constvalue='string';!value;//false!!value;//真实速度测试booleanvs!!好像!!但测试比布尔更快。来源:unsplash有些人更喜欢布尔值,因为它更明确。但是,正如KyleSimpson在《你不知道的JavaScript》中提到的,两者都是确定的。//better(worksexplicitly):if(!!a){}//alsogreat(worksexplicitly):if(Boolean(a)){}这里不会给你一个标准答案,你可以根据自己的需要选择。我会继续用!!在我的个人开发项目中,打字更少,而且我对语法有所了解。反之,如果作为一个团队考虑,作者可能会选择Boolean。大多数开发人员更了解这一点。无论选择哪一种,最重要的是保持代码一致,不要来回切换,选择一种并坚持下去。这更像是一种偏好选择,不要剥夺自己对这两种代码的理解。AvoidnewBool??eanusingprimitivesinsteadofobjecttypesvarstr='str';//AvoidtypeofnewBool??ean(str);//object//PreferredtypeofBoolean(str);//booleantypeof!!str;//boolean值得注意的是,newBoolean不是布尔值,而是布尔值的一个例子。基元更便宜,应该优先于对象类型使用。newBoolean(str)可以返回对象类型。Boolean(str)只是返回布尔值的原始值。我猜Boolean(str)比!!str快。因为只是一个操作,但是也有可能是浏览器进行了优化让程序员看到!!他们知道将参数直接转换为布尔原语(而不是实际连续两次执行NOT())。基元很便宜,它们是不可变的,因此可以共享引用而无需在实例上保留任何状态。或真或假。但是newBool??ean(str)是一个对象。它有自己唯一的存储地址,可以保存唯一的内部状态。这意味着它不能只持有对不可变单例实例的引用。每次运行newBoolean(str)都会实例化一个全新的Boolean()对象。使用布尔构造函数去除空字符串CJJ.:这是经典的例子。如果你得到一个逗号分隔的字符串值列表,想要过滤掉空字符串,你可以将布尔构造函数传递给Array.prototype.filter,它会自动去除零长度的字符串,只留下一个有效的字符串数组.varstr='some,list,,of,values';vararr=str.split(',');arr;//['some','list','','of','values']arr.filter(Boolean);//['some','list','of','values']你学会了吗?