• js 类型转变


    在绝大部分情况下,操作符和函数可以自动将一个值转换成正确的数据类型。这被称为”类型转变(type conversion)”。

    举个例子,alert 自动转变任何类型的参数为字符串类型,并显示该字符串。数学操作符转变参数为数值类型并进行操作。

    但在某些情况下,为了获得正确的操作结果,需要开发者自己明确地转变参数为正确类型。

    暂时不涉及 object 类型

    在本章节中,我们先不涉及 object 类型。此处,我们先学习原始类型。在我们学习了 object 类型之后,我们将在 [对象到原始类型的转变] 中学习 object 转变到原始类型的更多细节。

    ToString
    当需要一个值的字符串形式的时候,字符串转变就会发生。

    举个例子,alert(value) 在显示结果之前,就会完成值到字符串形式的转变。

    为了达到同样的功能(字符串转变),我们也可以执行一个 String(value) 调用:

    let value = true;
    alert(typeof value); // boolean
    
    value = String(value); // now value is a string "true"
    alert(typeof value); // string
    

    字符串转变是非常明显的,一个 false 变成了一个 “false”,null 变成了一个"null" 等。

    ToNumber
    在数学函数和表达式中,数值转变会自动发生。

    举个例子,当除法 / 操作符应用于非数值时:

    alert( "6" / "2" ); // 3, strings are converted to numbers
    

    此外,开发者可以使用一个 Number(value) 函数来明确地转换该value:

    let str = "123";
    alert(typeof str); // string
    let num = Number(str); // becomes a number 123
    alert(typeof num); // number
    

    如果从一个基于字符串的数据源,比如一个文本域,读取变量,而且,我们开发者又期望读入的是一个数值。此时,开发者很可能就需要明确地进行数值转变。

    如果此时输入的字符串不是一个合法的数值,整个的转变结果就是一个 NaN,举个例子:

    let age = Number("an arbitrary string instead of a number");	
    alert(age); // NaN, conversion failed
    

    变量的转变规则如下:

    参数 结果
    undefined NaN
    null 0
    true and false 1 and 0
    string 开头和结尾的空白符被去除。然后,如果剩余字符串为空,结果就为 0。否则,结果就为字符串中读取到的值。如果出错,结果就为 NaN。
    举个例子:

    alert( Number("   123   ") ); // 123
    alert( Number("123z") );      // NaN (error reading a number at "z")
    alert( Number(true) );        // 1
    alert( Number(false) );       // 0
    

    注意:在转变为数值时,null 和 undefined 需要区别对待:null 转变成 0, undefined 转变成 NaN。

    加号“+” 连接字符串

    几乎所有的数学操作符都会把参数转变成数值。但是,加号“+” 是一个需要区别对待特例。如果加号操作的某一个参数为 string,那么另一个参数也会被转变为 string。然后,它们就会被连接起来:

    alert( 1 + '2' ); // '12' (string to the right)
    alert( '1' + 2 ); // '12' (string to the left)
    

    注意:这只在加号操作的两个参数中至少有一个是 string 时才发生。否则的话,参数会被转变成数值类型,并执行数学加法操作。

    ToBoolean
    布尔转变是最简单的转变。

    它会自动发生于逻辑操作(我们将学习到条件测试和其他类型的逻辑操作)中,但是,也可以通过调用 Boolean(value) 来手动执行布尔转变。

    布尔转变的规则如下:

    那些直观上为空的值,比如0,空字符串,null,undefined和 NaN 等,就转变成 false。
    其他的值转变成 true。
    参数 结果
    0,null,undefined,NaN,"" false
    任何其他值 true
    举个例子:

    alert( Boolean(1) ); // true
    alert( Boolean(0) ); // false
    
    alert( Boolean("hello") ); // true
    alert( Boolean("") ); // false
    字符串“0” 的布尔值为true
    

    某些语言(比如 PHP)把字符串“0” 看待为false。但在 JavaScript 中,任何非空的字符串都是 true。

    alert( Boolean("0") ); // true
    alert( Boolean(" ") ); // spaces, also true (any non-empty string is true)
    

    总结
    在 JavaScript 中,存在三个被广泛使用的类型转变:字符串转变、数值转变、布尔转变。

    ToString——当我们需要输出某些东西时,也可以通过String(value)显式执行。原始类型变量的字符串转变是非常简单和明显的。

    ToNumber——当在数学操作符和表达式中发生,也可以通过Number(value)显式执行。

    ToBoolean——当在逻辑操作中发生,也可以通过Boolean(value)显式执行。

    绝大部分的转换规则都是非常容易理解和记忆的。一般的,开发者最容易犯错、最值得注意的异常情况是:

    undefined 进行数值转换,转成 NaN,而不是0。
    “0” 和仅含有空白字符的字符串" " 进行布尔转换,转成 true。
    关于 object 的转变内容,我们将在对象转变 一节中进行详细讲解。那是,我们将已经学习了更多 JavaScript 的对象知识。

    任务
    类型转变
    importance:5

    下列表达式的运算结果是什么?

    "" + 1 + 0
    "" - 1 + 0
    true + false
    6 / "3"
    "2" * "3"
    4 + 5 + "px"
    "$" + 4 + 5
    "4" - 2
    "4px" - 2
    7 / 0
    "  -9
    " + 5
    "  -9
    " - 5
    null + 1
    undefined + 1
    

    仔细思考后,写下你的答案,并且和程序的实际运行结果进行比较。

    转自:http://www.tiantianbianma.com/type-convert.html/

  • 相关阅读:
    openstack trove实例状态转换条件--Mitaka版本
    trove module使用说明
    openstack trove mongodb配置项
    openstack trove weekly meeting时间即将更改
    openstack trove redis配置项
    trove database功能总结
    openstack trove 数据库镜像构建列表
    openstack trove主要贡献公司-Tesora被Stratoscale收购
    openstack trove,使pylint忽略错误
    十件你需要知道的事,关于openstack-trove(翻译)
  • 原文地址:https://www.cnblogs.com/zhi-ming/p/10453182.html
Copyright © 2020-2023  润新知