JavaScript:数据类型

本文详细介绍了ECMAScript中的7种数据类型,包括简单数据类型(如Null、Undefined、Boolean、Number、String、Symbol)和复杂数据类型(Object),通过实例演示了它们的用法、特性及操作。重点讲解了每个类型的特性和比较,如布尔值与数值的区别,以及对象的创建和属性操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ECAMScript 有 7 种数据类型,被分为两类:简单数据类型和复杂数据类型。


简单数据类型

简单数据类型是原始值,是按值传递的。

简单数据类型包括:

  • Null ,空值
  • Undefined ,未定义
  • Boolean ,布尔值
  • Number ,数值
  • String ,字符串
  • Symbol,符号

数据类型 Null

数据类型 Null 只有一个值:

  • 空值
    字面量:null

示例:

let empty = null

值 null 被表示一个空对象指针。

值 null 是一个假值,即在判断中会被判断为 false 。


数据类型 Undefined

数据类型 Undefined 只有一个值:

  • 未定义值
    字面量:undefined

示例:

let unknow = undefined

值 undefined 是由值 null 派生出来的,因此 ECMAScript 使值 undefined 与值 null 在表面上相等,但本质上是不相等的。

示例:

console.log(undefined == null)  // true
console.log(undefined === null)  // false

数据类型 Boolean

数据类型 Boolean 有两个值:

  • 真值
    字面量:true

  • 假值
    字面量:false

示例:

let bool_01 = false
let bool_02 = true

数据类型 Boolean 的值被称为布尔值。

布尔值不等于数值,即值 true 不等于 1 ,值 flase 不等于 0 。


数据类型 Number

数据类型 Number 有四种值:

  • 整数(值)
    字面量:十进制数值(0~9)

    示例:

    let intNum = 20919
    
  • 浮点值
    字面量:

    • 小数
      示例:

      let floatNum = 20.79
      
    • 科学计数法
      示例:

      let sciNum = 19.48e-12
      
  • 无穷值
    字面量:Infinity

    正无穷:Infinity
    负无穷:-Infinity

    示例:

    let positiveInfinity = Infinity 
    let negativeInfinity = -Infinity
    
  • 非数值
    字面量:NaN

    意思是 Not a Number ,用于表示本来要返回数值的操作失败了。

    示例:

    console.log(0/0)  // NaN
    
    console.log(2/0)  // Infinity
    

    NaN 有几个独特的性质:

    • 任何涉及 NaN 的操作得到的值始终是 NaN
    • NaN 不等于包括 NaN 自身的任何值。

    示例:

    console.log(NaN * 10)  // NaN
    console.log(NaN === NaN)  // false
    

值的范围:

  • 最小值:Number.MIN_VALUE
  • 最大值:Number.MAX_VALUE
  • 正无穷:Number.POSITIVE_INFINITY
  • 负无穷:Number.NEGATIVE_INFINITY

特殊的值:

  • 正零:+0
  • 负零:-0

数据类型 String

数据类型 String 只有一种值:

  • 字符串(值)
    字面量:使用双引号 "" 、单引号 '' 、反引号 ` ` 包裹的字符。

示例:

let str_01 = "string01"
let str_02 = 'string02'
let str_03 = `string03`

数据类型 Symbol

数据类型 Symbol 只有一种值:

  • 符号(值)
    没有字面量语法。

    需要通过函数 Symbol() 来创建一个符号值。

示例:

let symbol = Symbol()

复杂数据类型

复杂数据类型是引用值,是按引用传递的。

复杂数据类型包括:

  • Object ,对象。

数据类型 Object

数据类型 Object 只有一种值:

  • 对象(值)
    字面量:

    使用花括号 {} 包裹对象的属性名与属性值的组合。

    属性名与属性值之间使用冒号操作符 : 进行关联;

    组合之间使用逗号操作符 , 分隔。

    对象的属性名有以下几种形式:

    • 使用字符串作为属性名。
      当字符串是连续的字母、数字、下划线 _ 的任意组合时,可以使用简写形式表示属性名。

      示例:

      const obj = {
      	'bool': true,
      	'num': 1,
      	'str': 'string''str-hi': 'hi',
      	'str space': 'space'
      }
      
      // 简写形式
      // 当字符串是由连续的字母、数字、下划线(_)组成时,才能使用简写
      // 其它情况都不能使用简写形式
      const obj_abbr = {
      	bool: true,
      	num: 1,
      	str: 'string',
      	str_01: 'string_01'
      }
      
    • 使用符号作为属性名。
      需要对符号使用方括号操作符 []

      示例:

      const symbol = Symbol()
      const obj = {
      	[symbol]: 'symbol attribute'
      }
      
    • 使用表达式作为属性名,被称为 可计算属性 。
      需要对表达式使用方括号操作符 []

      示例:

      const num = 2049
      const obj = {
      	['attribute' + num]: 'attribute 1'
      }
      

访问属性

访问对象的属性有两种形式:

  • 使用点操作符 .
    使用点操作符只能访问可以使用简写形式表示的属性。

    示例:

    const obj = {
    	num: 2076
    }
    console.log(obj.num)  // 使用点操作符(.)访问对象属性
    
    // 输出:
    // 2076
    
  • 使用方括号操作符 []
    使用方括号操作符可以访问使用字符串和符号形式表示的属性。

    示例:

    const symbol = Symbol()
    const obj = {
    	num: 2045,
    	[symbol]: 'symbol'
    }
    
    // 使用方括号操作符([])访问对象属性
    console.log(obj['num'])
    console.log(obj[symbol])
    
    // 输出:
    // 2045
    // symbol
    

添加属性

添加属性的语法与访问属性语法完全相同:

  • 使用点操作符 .
    使用点操作符只能添加可以使用简写形式表示的属性。

    示例:

    const obj = {}
    obj.attr = '2049'  // 使用点操作符(.)添加对象属性
    console.log('obj:', obj)
    
    // 输出:
    // obj: {attr: '2049'}
    
  • 使用方括号操作符 []
    使用方括号操作符可以添加使用字符串和符号形式表示的属性。

    示例:

    const symbol = Symbol()
    const obj = {}
    
    // 使用方括号操作符([])添加对象属性
    obj['attr'] = '2076'
    obj[symbol] = 'symbol'
    
    console.log('obj:', obj)
    
    // 输出:
    // obj: {attr: '2076', Symbol(): 'symbol'}
    

删除属性

使用操作符 delete 删除属性。

示例:

const obj = {
	attr_01: '2091',
	attr_02: '2108'
}

delete obj.attr_02  // 使用操作符 delete 删除属性

console.log('obj:', obj)

// 输出:
// obj: {attr_01: '2091'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值