JavaScript类型转换

作者: 微语博客 | 来源:发表于2021-07-16 22:34 被阅读0次

    类型转换

    大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型。比如,alert 会自动将任何值都转换为字符串以进行显示。算术运算符会将值转换为数字。在某些情况下,我们需要将值显式地转换为我们期望的类型。在本文中,我们不讨论 object 类型。目前,我们只学习三种原始类型:转换为 string 类型、转换为 number 类型和转换为 boolean 类型。

    字符串转换

    当我们需要一个字符串形式的值时,就会进行字符串转换。比如,alert(value)value 转换为字符串类型,然后显示这个值。我们也可以显式地调用 String(value) 来将 value 转换为字符串类型:

    var value = true;
    console.log(typeof value); // boolean
    
    value = String(value); // 现在,值是一个字符串形式的 "true"
    console.log(typeof value); // string
    
    

    字符串转换最明显。false 变成 "false"null 变成 "null" 等。

    数字型转换

    在算术函数和表达式中,会自动进行 number 类型转换。比如,当把除法 / 用于非 number 类型:

    console.log( "6" / "2" ); // 3, string 类型的值被自动转换成 number 类型后进行计算
    

    我们也可以使用 Number(value) 显式地将这个 value 转换为 number 类型。

    var str = "123";
    console.log(typeof str); // string
    
    var num = Number(str); // 变成 number 类型 123
    console.log(typeof num); // number
    

    当我们从 string 类型源(如文本表单)中读取一个值,但期望输入一个数字时,通常需要进行显式转换。

    如果该字符串不是一个有效的数字,转换的结果会是 NaN。例如:

    var age = Number("an arbitrary string instead of a number");
    
    console.log(age); // NaN,转换失败
    

    number 类型转换规则:

    变成
    undefined NaN
    null 0
    true和false 1 and 0
    string 去掉首尾空格后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0。否则,将会从剩余字符串中“读取”数字。当类型转换出现 error 时返回 NaN

    举个栗子:

    console.log( Number("   123   ") ); // 123
    console.log( Number("123z") );      // NaN(从字符串“读取”数字,读到 "z" 时出现错误)
    console.log( Number(true) );        // 1
    console.log( Number(false) );       // 0
    

    请注意 nullundefined 在这有点不同:null 变成数字 0undefined 变成 NaN

    布尔型转换

    布尔(boolean)类型转换是最简单的一个。它发生在逻辑运算中(稍后我们将进行条件判断和其他类似的东西),但是也可以通过调用 Boolean(value) 显式地进行转换。

    转换规则如下:

    • 直观上为“空”的值(如 0、空字符串、nullundefinedNaN)将变为 false
    • 其他值变成 true

    比如:

    console.log( Boolean(1) ); // true
    console.log( Boolean(0) ); // false
    
    console.log( Boolean("hello") ); // true
    console.log( Boolean("") ); // false
    

    一些编程语言(比如 PHP)视 "0"false。但在 JavaScript 中,非空的字符串总是 true

    console.log( Boolean("0") ); // true
    console.log( Boolean(" ") ); // 空格,也是 true(任何非空字符串都是 true)
    

    相关文章

      网友评论

        本文标题:JavaScript类型转换

        本文链接:https://www.haomeiwen.com/subject/sklipltx.html