JavaScript 解释将非布尔值强制转换为布尔值的过程

JavaScript 解释将非布尔值强制转换为布尔值的过程

众所周知,JavaScript是一种宽容的语言。它不在意程序员犯的愚蠢错误。因此,有时它会给出意外的结果。所以它敏感地说:“我可以做到任何可能性。”

强制类型转换 是其中之一,JavaScript会因为强制类型转换而给出奇怪的结果,因为JavaScript会自动执行类型转换,首先将值转换为其他数据类型(字符串、数字、对象等),然后给出结果。任何类型,无论是基本类型(字符串、布尔、数字、null、undefined、symbol)还是非基本类型(对象、数组、正则表达式),都可以进行强制类型转换。

例子:

JavaScript

<script>
    if([]+"A")
    console.log([]+5);
    console.log("1"+2);
    if(true)
    console.log(false)
    console.log({ }+{ });
</script>
JavaScript

输出:

JavaScript 解释将非布尔值强制转换为布尔值的过程

解释: 这里,对于第一条语句,第一个操作数 [] 是一个对象,另一个是一个字符串,因此两者被强制转换为字符串并组合在一起,if 语句内部的逻辑也是如此,都被强制转换为字符串。对于第二个 if 语句,true 首先被强制转换为 1,然后执行 if 块。最后一个例子{} + {},这里都是对象,所以它们被连接为一个对象。

布尔值: 一个具有“true”和“false”值的逻辑实体。

进行布尔转换有两种方法:

  1. !!:首先使用单个 将其转换或强制转换为与给定值相反的布尔值,然后使用两个 !! 给出布尔值。
  2. Boolean():将值简单地强制转换为所需的布尔值。

示例: :

JavaScript

<script>
    // Boolean converted true first to 1 
    // then it gives output true
    console.log(Boolean(true)) //true
 
    // String is constant variable storing string value
    const string = 'string';
     
    // y is constant variable coerced boolean 
    // to constant variable string
    const y=!!string;
    console.log(y) //true
     
    // Here !(single exclamatory) on constant variable 
    // y coerced true value to false.
    console.log(!y) //false
 
    // a is constant variable storing integer value
    const a=34
     
    // x is constant variable coerced boolean to 
    // constant variable a
    const x=Boolean(34);
    console.log(x) //true
</script>
JavaScript

输出:

true
true
false
true
JavaScript

有两种类型的强制类型转换:

  1. 隐式类型转换: Javascript会自动对另一种数据类型进行转换,以按照开发者的需求输出结果。
  2. 显式类型转换: 开发者或程序员明确指定类型,也可以称为类型转换。

示例:

Javascript

<script>
    // Implicit coercion
    console.log(typeof(5/null));
    console.log(typeof('2'== 2));
 
    // Explicit coercion
    const num = "124789";
    const a = Number(num);
    console.log(typeof(a));
    const b = 0 | null
    console.log(typeof(b))
</script>
JavaScript

输出:

number
boolean
number
number
JavaScript

值为空的情况: 转换为布尔值时,永远返回true结果。

在JavaScript中有六个值为空的情况:

  1. false
  2. undefined
  3. null
  4. NaN (非数字)
  5. 0
  6. ” ” (空字符串)

示例:

JavaScript

<script>
    // Boolean conversion of empty string
    console.log(!!"");         // false
     
    // Boolean conversion of 0
    console.log(!!0);          // false
     
    // Boolean conversion of null
    console.log(Boolean(null));       // false
     
    // Boolean conversion of undefined
    console.log(Boolean(undefined));  // false
     
    // Opposite of boolean conversion 
    // (true to false using single !) of not a number
    console.log(Boolean(!NaN));        // true
     
    // Boolean conversion of false
    console.log(!!false);      //false
</script>
JavaScript

输出:

false
false
false
false
true
false
JavaScript

在JavaScript中,将布尔值转换时哪里不适用强制转换?

比较运算符(===)被称为严格相等运算符。是因为(===)强制转换不起作用,而(==)起作用。它会检查数据类型和内容。如果数据类型不相等,它将返回false。所以 "1" === 1现在结果为false。它根据类型给出结果,它会触发隐式类型转换。

注意: 所有上述示例都可以通过在HTML的script标签内输入或使用控制台进行测试。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册