JavaScript (!!) 中的双感叹号是干什么用的?
JavaScript (!!) 中的双感叹号是干什么用的?
如果您曾在某人的 JavaScript 代码中注意到双感叹号 (!!),您可能会好奇它的用途和作用。这很简单:这是一种将变量转换为布尔值(真或假)的捷径。让我解释。
typeof JavaScript!= '静态'
JavaScript 不是静态语言,而是动态语言。这意味着变量可以引用或保存任何类型的值,此外,该类型可以随时更改。无论您喜欢静态语言还是动态语言,都由您决定。
但是,我们当然可以对 JavaScript 中的类型有所了解。以下是 JavaScript 中各种数据类型的快速列表:
- 布尔值
- 细绳
- 数字
- 目的
布尔数据类型是所有数据类型中最简单的,因为它是单个位值:0(假)或 1(真)。
真与真
我们可以将变量设置为布尔值,并在评估 if 语句时使用它。这是我们的简单示例。
功能() {
var thisIsTrue = true;
如果(thisIsTrue){
window.alert('当然是!');
}
}
执行上述函数时,我们将收到警报 那当然是! 因为变量 这是真实的
被设置为布尔值 真的
.
现在,让我们看看 JavaScript 如何评估非布尔值以将其转换为布尔值。
功能() {
无变量 = '';
如果(什么都没有){
window.alert('没什么');
} 别的 {
window.alert('嗯?');
}
}
执行上述函数时,我们将收到警报 嗯? 因为变量的值 没有什么
被评估为假。这就是通常所说的 真相 相对 谬误 .
JavaScript 认为以下值是假的:
- 很多时候:
“”
0
无效的
不明确的
钠
JavaScript 认为以下值为真:
- 目的:
{}
- 种类:
[]
- 非空字符串:
“任何事物”
- 非零数:
3.14
- 日期:
新日期();
运行您的代码的 JavaScript 引擎将在必要时尝试将值转换(或强制)为布尔值,例如在 if 语句中求值时。
那么为什么要双感叹号呢?
在某些情况下,您可能希望将变量强制转换为显式布尔值。因为?嗯,第一个原因是大多数时候开发人员不使用类型安全的比较运算符。
类型安全的比较运算符是:
- 严格相等:
===
- 严格不相等:
!==
使用类型安全的比较运算符时,您正在检查值是否相等(或不相等)以及类型是否相同。如果没有类型安全的比较运算符,您将允许 JavaScript 引擎根据真/假逻辑自由地强制您的变量为真或假。
要将 JavaScript 变量转换为布尔值,只需使用两个感叹号:
功能() {
var name = '布赖恩'; //警报'字符串'
window.alert(类型名称); //转换为布尔值
var bool = !!name; //警报'布尔'
window.alert(bool 类型);
}
在上面的示例代码中,我们正在转换字符串 “布赖恩”
为了一个值 布尔值
.所以第二个警报将表明该变量现在是 布尔值
勇气。
由 Brian F Love 的博客免费翻译,您可以在此处访问原始文章: https://brianflove.com/2014-09-02/whats-the-double-exclamation-mark-for-in-javascript/
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明