跳到主要内容

数据类型

常规方法区分
  • JavaScript有两种数据类型
  • 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。
  • 引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。
  • 摘自菜鸟教程https://www.runoob.com/js/js-datatypes.html
然而
  • 上述描述不方便新手进行学习,因此我用下面方法为大家进行区分
  • 可以两个互相参考进行学习与理解

1.简单数据类型

  • 定义及使用理解都相对简单

1.Number 数字型

  • 对应现实生活中的数学数字, 当我们需要进行数学运算时, 需要用到此类型
  • 包括 整数 (int/long), 小数 (float/double), 负数 (负数也是整数), 分数 (分数也是小数 )等
let 数字变量 = 123
logd(数字变量) // 返回 123
logd(typeof 数字变量) // 返回 number

2.String 字符串型

  • 对应现实中的文字内容,比如你想打一句话给对方,此时内容即为字符串类型
  • 字符串内容需要用 一对 单引号/双引号 包裹起来,并赋值给变量
let 字符串变量1 = '我想对你说'    // 一对单引号
let 字符串变量2 = "你还是别说了" // 一对双引号

logd(字符串变量1) // 返回 我想对你说
logd(字符串变量2) // 返回 你还是别说了

logd(typeof 字符串变量1) // 返回 string
logd(typeof 字符串变量2) // 返回 string
  • 如果文字本身需要保留单引号/双引号, 则用另一种引号包裹即可
let 保留单引号 = "我想保留'单引号'内容"
let 保留双引号 = '我想保留"双引号"内容'

logd(保留单引号) // 返回 我想保留'单引号'内容
logd(保留双引号) // 返回 我想保留"双引号"内容
  • 带引号的数字,也是字符串类型
let 我是数字吗 = 123
logd(我是数字吗) // 返回 123
logd(typeof 我是数字吗) // 返回 number

我是数字吗 = "123"
logd(我是数字吗) // 返回 123
logd(typeof 我是数字吗) // 返回 string

3.Boolean 布尔型[真/假]

  • 布尔值只有两个取值 true / false, 对应 /
  • 一般用来判断条件是否成立, 或行为是否完成, 或事件开关等来使用
let 真的吗 = true
logd(真的吗) // 返回 true
logd(typeof 真的吗) // 返回 boolean

真的吗 = false
logd(真的吗) // 返回 false
logd(typeof 真的吗) // 返回 boolean

2.复杂数据类型

1.Object 对象/键值对

简单理解
  • 对象是对现实事物的一种抽象理解,对象拥有属性和方法
  • 以人为例,人有名字,年龄,身高,体重,这些都是 属性
  • 人可以去开车,去跳舞,去吃饭,说一句话,这些是 方法
  • 对象可以用一对大括号来进行定义 {}
  • 而属性和方法,则在 {} 中书写,并用冒号 : 隔开的键值对 键keyvalue 来进行定义
  • 不同的属性或方法, 通过逗号 , 进行分隔
let 对象_人 = {"姓名": "Mr_老冷", "年龄": 36, "身高": 182, "QQ": "1920712147"}
logd(对象_人) // 返回 [object Object]
logd(typeof 对象_人) // 返回 object
优化
  • 由上述输出可见,logd并没有打印出对象的具体内容
  • 此是由于在EasyClick中,为了绕过rhino内核的一个bug,限制了输出内容
  • 如果想打印具体内容,需要转成json并打印,此时需要借助js自带的JSON模块
  • 更多方法点击跳转-JSON与对象互转使用方法
let 对象_人 = {"姓名": "Mr_老冷", "年龄": 36, "身高": 182, "QQ": "1920712147"}
logd(JSON.stringify(对象_人)) // 返回 {"姓名": "Mr_老冷", "年龄": 36, "身高": 182, "QQ": "1920712147"}
logd(typeof JSON.stringify(对象_人)) // 返回 string
打印 属性
  • 如果需要打印对象的属性,有两种方法
let 对象_人 = {"姓名": "Mr_老冷", "年龄": 36, "身高": 182, "QQ": "1920712147"}
logd(对象_人.姓名) // 返回 Mr_老冷
logd(typeof 对象_人.姓名) // 返回 sting

logd(对象_人.年龄) // 返回 36
logd(typeof 对象_人.年龄) // 返回 number

logd(对象_人["姓名"]) // 返回 Mr_老冷
logd(typeof 对象_人["姓名"]) // 返回 sting

logd(对象_人["年龄"]) // 返回 36
logd(typeof 对象_人["年龄"]) // 返回 number
修改 / 新增 属性
  • 如果需要修改/新增对象的属性,有两种方法
let 对象_人 = {"姓名": "Mr_老冷", "年龄": 36, "身高": 182, "QQ": "1920712147"}
logd(对象_人.姓名) // 返回 Mr_老冷

对象_人.姓名 = "老冷编程学院"
logd(对象_人.姓名) // 返回 老冷编程学院

对象_人["姓名"] = "http://www.laoleng.vip"
logd(对象_人.姓名) // 返回 http://www.laoleng.vip

对象_人.官网 = "老冷编程学院"
logd(对象_人.官网) // 返回 老冷编程学院
其他用法
  • 为了方便较长的对象在定义时的显示问题,可以换行进行书写
  • 为了偷懒,键 key 中的双引号也可以省略
  • 如果键 key 中带了特殊符号(如a-b)等, 则不能省略双引号,会报错
let 对象_人1 = {
"姓名": "Mr_老冷",
"年龄": 36,
"身高": 182,
"QQ": "1920712147"
}
let 对象_人2 = {
姓名: "Mr_老冷",
年龄: 36,
身高: 182,
QQ: "1920712147",
"a-b": "a-b"
}

2.Array 数组

  • 数组是一堆元素的有序集合,可以理解为军训时,排成一排的学生,或者排成一排的物品
  • 数组可以根据编号 (数组下标index), 来找到(访问) 具体的内容
  • 也可以通过编号 (数组下标index) , 来修改内容
  • 区别在于,学生报数从 1 开始,而 数组下标index0 开始

数组定义

  • 数组定义有3种方法
// 第一种,很麻烦
let 数组1 = new Array()
数组1[0] = "第一个"
数组1[1] = "第二个"
数组1[2] = 3
数组1[3] = true
logd(数组1) // 返回 第一个,第二个,3,true

// 第二种,稍微简单一些
let 数组2 = new Array("第一个", "第二个", 3, true)
logd(数组2) // 返回 第一个,第二个,3,true

// 第三种,最简单,推荐
let 数组3 = ["第一个", "第二个", 3, true]
logd(数组3) // 返回 第一个,第二个,3,true

通过下标读取内容

let 数组 = ["第一个", "第二个", 3, true]
logd(数组) // 返回 第一个,第二个,3,true
logd(数组[0]) // 返回 第一个
logd(数组[1]) // 返回 第二个
logd(数组[2]) // 返回 3
logd(数组[3]) // 返回 true
logd(数组[4]) // 返回 undefined undefined表示没有读取到值

通过下标修改值

let 数组 = ["第一个", "第二个", 3, true]
logd(数组) // 返回 第一个,第二个,3,true
logd(数组[0]) // 返回 第一个
数组[0] = 123
logd(数组[0]) // 返回 123

3.特殊数据类型

1.null 空

  • 在js中, null 代表 空值无值 , 什么都没有, 是一个特殊的对象
  • "" 是空字符串, {} 是空对象, [] 是空数组, null 是什么都没有, 几种形式并不等同
  • null 通常用于初始化变量, 或重置变量为 null , 以便释放内存
let a = "123"
logd(a) // 返回 123
a = null
logd(a) // 返回 null

let b = null

2.undefined 未定义

  • undefined 表示变量未定义,并不是空, 空是null
  • 通常是因为定义变量时,未初始化参数导致, 或者尝试读取一个不存在的内容
  • 通常在定义变量时, 要初始化一个内容,以免引起不必要的错误
let a
logd(a) // 返回 undefined
a = 123
logd(a) // 返回 123