zoukankan      html  css  js  c++  java
  • 松软科技Web课堂:JavaScript 类型转换

    Number() 转换数值,String() 转换字符串,Boolean() 转换布尔值。

    JavaScript 数据类型

    JavaScript 中有五种可包含值的数据类型:

    • 字符串(string)
    • 数字(number)
    • 布尔(boolean)
    • 对象(object)
    • 函数(function)

    有三种对象类型:

    • 对象(Object)
    • 日期(Date)
    • 数组(Array)

    同时有两种不能包含值的数据类型:

    • null
    • undefined

    typeof 运算符

    您可以使用 typeof 运算符来确定 JavaScript 变量的数据类型。

    实例

    typeof "Bill"                 // 返回 "string"
    typeof 3.14                   // 返回 "number"
    typeof NaN                    // 返回 "number"
    typeof false                  // 返回 "boolean"
    typeof [1,2,3,4]              // 返回 "object"
    typeof {name:'Bill', age:62}  // 返回 "object"
    typeof new Date()             // 返回 "object"
    typeof function () {}         // 返回 "function"
    typeof myCar                  // 返回 "undefined" *
    typeof null                   // 返回 "object"

    请注意:

    • NaN 的数据类型是数值
    • 数组的数据类型是对象
    • 日期的数据类型是对象
    • null 的数据类型是对象
    • 未定义变量的数据类型是 undefined
    • 尚未赋值的变量的数据类型也是 undefined

    您无法使用 typeof 去判断 JavaScript 对象是否是数组(或日期)。

    typeof 的数据类型

    typeof 运算符不是变量。它属于运算符。运算符(比如 /)没有数据类型。

    但是,typeof 始终会返回字符串(包含运算数的类型)。

    constructor 属性

    constructor 属性返回所有 JavaScript 变量的构造器函数。

    实例

    "Bill".constructor                 // 返回 "function String()  { [native code] }"
    (3.14).constructor                 // 返回 "function Number()  { [native code] }"
    false.constructor                  // 返回 "function Boolean() { [native code] }"
    [1,2,3,4].constructor              // 返回 "function Array()   { [native code] }"
    {name:'Bill', age:62}.constructor  // 返回" function Object()  { [native code] }"
    new Date().constructor             // 返回 "function Date()    { [native code] }"
    function () {}.constructor         // 返回 "function Function(){ [native code] }"

    您可以通过检查 constructor 属性来确定某个对象是否为数组(包含单词 "Array"):

    实例

    function isArray(myArray) {
        return myArray.constructor.toString().indexOf("Array") > -1;
    }

    或者更简单,您可以检查对象是否是数组函数:

    实例

    function isArray(myArray) {
        return myArray.constructor === Array;
    }

    您可以通过检查 constructor 属性来确定某个对象是否为日期(包含单词 "Date"):

    实例

    function isDate(myDate) {
        return myDate.constructor.toString().indexOf("Date") > -1;
    }

    或者更简单,您可以检查对象是否是日期函数:

    实例

    function isDate(myDate) {
        return myDate.constructor === Date;
    }

    JavaScript 类型转换

    JavaScript 变量能够被转换为新变量以及另一种数据类型:

    • 通过使用 JavaScript 函数
    • 通过 JavaScript 本身自动转换

    把数值转换为字符串

    全局方法 String() 能够把数字转换为字符串。

    它可用于任意类型的数字、文字、变量或表达式:

    实例

    String(x)         // 从数值变量 x 返回字符串
    String(123)       // 从数值文本 123 返回字符串
    String(100 + 23)  // 从表达式中的数值返回字符串

    数字方法 toString() 同理。

    实例

    x.toString()
    (123).toString()
    (100 + 23).toString()
    方法描述
    toExponential() 返回字符串,对数字进行舍入,并使用指数计数法来写。
    toFixed() 返回字符串,对数字进行舍入,并使用指定位数的小数来写。
    toPrecision() 返回字符串,把数字写为指定的长度。

    把布尔转换为字符串

    全局方法 String() 能够将布尔转换为字符串。

    String(false)        // 返回 "false"
    String(true)         // 返回 "true" 

    布尔方法 toString() 同理。

    false.toString()     // 返回 "false"
    true.toString()      // 返回 "true"

    把日期转换为字符串

    全局方法 String() 可将日期转换为字符串。

    String(Date())      // 返回 "Fri Dec 13 2019 09:48:21 GMT+0800 (中国标准时间)"

    日期方法 toString() 同理。

    实例

    Date().toString()   // 返回 "Fri Dec 13 2019 09:48:21 GMT+0800 (中国标准时间)"
    方法描述
    getDate() 获得以数值计(1-31)的日
    getDay() 或者以数值计(0-6)的周
    getFullYear() 获得四位的年(yyyy)
    getHours() 获得时(0-23)
    getMilliseconds() 获得毫秒(0-999)
    getMinutes() 获得分钟(0-59)
    getMonth() 获得月(0-11)
    getSeconds() 获得秒(0-59)
    getTime() 获得时间(1970 年 1 月 1 日以来的毫秒)

    把字符串转换为数值

    全局方法 Number() 可把字符串转换为数字。

    包含数字的字符串(比如 "3.14")转换为数字(比如 3.14)。

    空的字符串转换为 0。

    其他字符串将转换为 NaN(Not a number,不是数字)。

    Number("3.14")    // 返回 3.14
    Number(" ")       // 返回 0
    Number("")        // 返回 0
    Number("99 88")   // 返回 NaN
    方法描述
    parseFloat() 解析字符串并返回浮点数。
    parseInt() 解析字符串并返回整数。

    一元 + 运算符

    一元的 + 运算符可用于把变量转换为数字:

    实例

    var y = "5";      // y 是字符串
    var x = + y;      // x 是数字

    如果无法转换变量,则仍会成为数字,但是值为 NaN(Not a number):

    实例

    var y = "Bill";   // y 是字符串
    var x = + y;      // x 是数字 (NaN)

    把布尔转换数值

    全局方法 Number() 也可把布尔转换为数字。

    Number(false)     // 返回 0
    Number(true)      // 返回 1

    把日期转换为数字

    全局方法 Number() 可用于把日期转换为数字。

    d = new Date();
    Number(d)          // 返回 1576201701989

    日期方法 getTime() 同理。

    d = new Date();
    d.getTime()        // 返回 1576201701992,时间戳

    自动类型转换

    如果 JavaScript 尝试操作一种“错误”的数据类型,它会试图将该值转换为“正确”的类型。

    结果并不总是你所期望的:

    5 + null    // 返回 5         因为 null 被转换为 0
    "5" + null  // 返回 "5null"   因为 null 被转换为  "null"
    "5" + 2     // 返回 52        因为 2 被转换为 "2"
    "5" - 2     // 返回 3         因为 "5" 被转换为 5
    "5" * "2"   // 返回 10        因为 "5" 和 "2" 被转换为 5 和 2

    自动字符串转换

    JavaScript 自动调用变量的 toString() 函数,当您试图“输出”对象或变量时:

    document.getElementById("demo").innerHTML = myVar;
    
    // 如果 myVar = {name:"Fjohn"}  // toString 转换为 "[object Object]"
    // 如果 myVar = [1,2,3,4]       // toString 转换为 "1,2,3,4"
    // 如果 myVar = new Date()      // toString 转换为 "Fri Dec 13 2019 09:48:21 GMT+0800 (中国标准时间)"

    数字和布尔也会被转换,但并不明显:

    // 如果 myVar = 123             // toString 转换为 "123"
    // 如果 myVar = true            // toString 转换为 "true"
    // 如果 myVar = false           // toString 转换为 "false"

    JavaScript 类型转换表

    下表中列出了将不同 JavaScript 值转换为数字、字符串和布尔的结果:

    原始值转换为数字转换为字符串转换为逻辑
    false 0 "false" false
    true 1 "true" true
    0 0 "0" false
    1 1 "1" true
    "0" 0 "0" true
    "000" 0 "000" true
    "1" 1 "1" true
    NaN NaN "NaN" false
    Infinity Infinity "Infinity" true
    -Infinity -Infinity "-Infinity" true
    "" 0 "" false
    "20" 20 "20" true
    "twenty" NaN "twenty" true
    [ ] 0 "" true
    [20] 20 "20" true
    [10,20] NaN "10,20" true
    ["twenty"] NaN "twenty" true
    ["ten","twenty"] NaN "ten,twenty" true
    function(){} NaN "function(){}" true
    { } NaN "[object Object]" true
    null 0 "null" false
    undefined NaN "undefined" false
  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯VIP基础练习 矩形面积交
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    核心思想:想清楚自己创业的目的(如果你没有自信提供一种更好的产品或服务,那就别做了,比如IM 电商 搜索)
    在Linux中如何利用backtrace信息解决问题
  • 原文地址:https://www.cnblogs.com/sysoft/p/12033535.html
Copyright © 2011-2022 走看看