• JavaScript 44 JavaScript typeof


    JavaScript

    44 JavaScript typeof

    44.1 JavaScript typeof

    在 JavaScript 中有 5 种不同的可以包含值的数据类型:

    • string
    • number
    • boolean
    • object
    • function

    有 6 种类型的对象:

    • Object
    • Date
    • Array
    • String
    • Number
    • Boolean

    以及 2 种不能包含值的数据类型:

    • null
    • undefined
    44.2 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:19}  // 返回 "object"
    typeof new Date()             // 返回 "object"
    typeof function () {}         // 返回 "function"
    typeof myCar                  // 返回 "undefined" *
    typeof null                   // 返回 "object"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    注意:

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

    无法使用 typeof 来确定 JavaScript 对象是否是数组(或日期)。

    44.3 原始日期

    原始数据值指的是没有附加属性和方法的单个简单数据值。

    typeof 运算符可以返回以下原始类型之一:

    • string
    • number
    • boolean
    • undefined
    typeof "Bill"              // 返回 "string"
    typeof 3.14                // 返回 "number"
    typeof true                // 返回 "boolean"
    typeof false               // 返回 "boolean"
    typeof x                   // 返回 "undefined" (if x has no value)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    44.4 复杂数据

    typeof 运算符可以返回两种复杂类型之一:

    • function
    • object

    typeof 运算符会为对象、数组和 null 返回 “object”。

    typeof 运算符不会为函数返回 “object”。

    typeof {name:'Bill', age:19} // 返回 "object"
    typeof [1,2,3,4]             // 返回 "object"(非 "array",请注意下面的例子)
    typeof null                  // 返回 "object"
    typeof function myFunc(){}   // 返回 "function"
    
    • 1
    • 2
    • 3
    • 4

    typeof 运算符会为数组返回 "object",因为在 JavaScript 中数组是对象。

    44.5 typeof 的数据类型

    typeof 运算符并不是变量。它只是一个运算符。运算符 (+ - * /) 没有任何数据类型。

    但是,typeof 运算符总是返回字符串(包含操作数的类型)。

    44.6 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:19}.constructor  // 返回 function Object()  {[native code]}
    new Date().constructor            // 返回 function Date()    {[native code]}
    function () {}.constructor        // 返回 function Function(){[native code]}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    可以检查 constructor 属性以确定对象是否为数组(包含 "Array" 一词):

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

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

    function isArray(myArray) {
      return myArray.constructor === Array;
    }
    
    • 1
    • 2
    • 3

    可以检查 constructor 属性以确定对象是否为日期(包含 "Date" 一词):

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

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

    function isDate(myDate) {
      return myDate.constructor === Date;
    }
    
    • 1
    • 2
    • 3
    44.7 Undefined

    在 JavaScript 中,没有值的变量的值是 undefined。类型也是 undefined

    let car;    // 值是 undefined,类型也是 undefined。
    
    • 1

    在这里插入图片描述

    通过将其值设置为 undefined,可以清空任何变量。类型也将是 undefined

    car = undefined;    // 值是 undefined,类型也是 undefined。
    
    • 1
    44.8 空值

    空值与 undefined 无关。

    空字符串既有合法值又有类型。

    let car = "";    // 值是 "",类型是 "string"
    
    • 1
    44.9 Null

    在 JavaScript 中 null 即是“无”。它应该是不存在的东西。

    不幸的是,在 JavaScript 中,null 的数据类型是一个对象。

    可以认为它是 JavaScript 中的一个 bug,typeof null 是一个对象。类型应为 null

    可以通过将对象设置为 null 来清空对象:

    let person = {firstName:"Bill", lastName:"Gates", age:19, eyeColor:"blue"};
    person = null;    // 现在值为 null,但类型仍然是对象
    
    • 1
    • 2

    还可以通过将对象设置为 undefined 来清空对象:

    let person = {firstName:"Bill", lastName:"Gates", age:19, eyeColor:"blue"};
    person = undefined;   // 现在值和类型都是未定义
    
    • 1
    • 2
    44.10 undefined 与 null 的区别

    undefinednull 值相等但类型不同:

    typeof undefined           // undefined
    typeof null                // object
    
    null === undefined         // false
    null == undefined          // true
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

  • 相关阅读:
    【启扬方案】启扬多尺寸安卓屏一体机,助力仓储物料管理系统智能化管理
    Spark任务调度概述_大数据培训
    【vue】axios封装拦截
    【Python】Hook函数相关知识点
    20:第三章:开发通行证服务:3:在程序中,打通redis服务器;(仅仅是打通redis服务器,不涉及具体的业务开发)
    Okhttp通用工具类
    iOS中的锁
    Guitar Pro8吉他打谱下载自学制作教程
    IT业务运维可观测技术的发展浅析
    Net6 Xunit 集成测试
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/127608368