CodeAshen's blog CodeAshen's blog
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)

CodeAshen

后端界的小学生
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)
  • CSS3浮动定位与背景样式

  • CSS动画

  • JS基础语法与表达式

    • 01-JS语法与变量
    • 02-JS基本数据类型
      • Number(数字)类型
        • 数字的表现形式
        • 特殊数字类型值 NaN
      • String(字符串)类型
        • 字符串性质
        • 字符串的常用方法
      • Boolean(布尔)类型
      • undefined类型
      • null类型
      • 数据类型转换
        • 其他值->数字
        • 其他值->字符串
        • 其他值->布尔值
      • (案例)小小加法计算器
    • 03-表达式与操作符
  • 流程控制语句与数组

  • JS函数与DOM

  • 面向对象

  • 正则表达式

  • ES6基础入门

  • ES6语法扩展

  • Promise与Class

  • Module与Babel

  • 前端
  • JS基础语法与表达式
CodeAshen
2023-02-10
目录

02-JS基本数据类型

# 数据类型简介和检测

JS 中数据类型分为两大类:基本数据类型和复杂数据类型。

image-20220718225206252

typeof 运算符:使用 typeof 运算符可以检测值或者变量的类型

typeof 5;         // number
typeof 'hello';   // string
1
2

5 种基本数据类型的 typeof 检测结果

image-20220718225519378

# 基本数据类型

# Number(数字)类型

# 数字的表现形式

  • 所有数字不分大小、不分整浮、不分正负,都是数字类型

  • 小数中 0 可以省略

    0.5 可以写成 .5

  • 科学计数法

    3e8 表示 3*10^8,3e-4 表示 3*10^-4

  • 不同进制的数字

    /* 二进制以 0b 开头 */
    0b1111   // 2
    
    /* 八进制以 0 开头 */
    017      // 15
    
    /* 十六进制以 0x 开头 */
    0xf      // 15
    
    1
    2
    3
    4
    5
    6
    7
    8

# 特殊数字类型值 NaN

  • NaN是英语 "not a number" 的意思,即“不是一个数”,但它是一个数字类型的值

    typeof NaN;   //number
    
    1
  • 0 除以 0 的结果是 NaN,事实上,在数学运算中,若结果不能得到数字,其结果往往都是 NaN

    // 下面运算结果都是 NaN
    0 / 0
    '我' + '你'
    
    1
    2
    3
  • NaN 有一个“奇怪”的性质:不自等。这个知识点将在后续课程中讲解。

    NaN == NaN  // false
    
    1

# String(字符串)类型

# 字符串性质

  • 字符串就是“人类的自然语言”
  • 字符串要用引号包裹,双引号或者单引号均可
  • 字符串的 length 属性表示字符串的长度

# 字符串的常用方法

image-20220718231801305

以如下字符串为例,介绍这些方法

image-20220718232032716

charAt

  • charAt() 获取指定位置的字符

    '我喜欢JS,我也喜欢HTML'.charAt(0)    // '我'
    '我喜欢JS,我也喜欢HTML'.charAt(100)  // ''
    
    1
    2
  • 可以直接使用角标获取字符

    '我喜欢JS,我也喜欢HTML'[0]   // '我'
    
    1

substring

  • substring(a, b) 得到从 a 开始到 b 结束(不包括 b)的子串

    '我喜欢JS,我也喜欢HTML'.substring(3, 5)  // 'JS'
    
    1
  • substring(a, b) 省略第二个参数,返回字串一直到结尾

    '我喜欢JS,我也喜欢HTML'.substring(6)  // '我也喜欢HTML'
    
    1
  • substring(a, b) 中,a 可以大于 b,数字顺序将自动调整为小数在前

    '我喜欢JS,我也喜欢HTML'.substring(3, 5)  // 'JS'
    
    1

substr

  • substr(a, b) 得到从 a 位置开始长度为 b 的字串

    '我喜欢JS,我也喜欢HTML'.substr(3, 2)  // 'JS'
    
    1
  • substr(a, b) 中 b 可以省略,表示到字符串结尾

    '我喜欢JS,我也喜欢HTML'.substr(3)  // 'JS,我也喜欢HTML'
    
    1
  • substr(a, b) 中 a 可以是负数,表示倒数位置

    '我喜欢JS,我也喜欢HTML'.substr(-4, 2)  // 'HT'
    
    1

slice

  • slice(a, b) 得到从 a 开始到 b 结束(不包括 b)的子串

    '我喜欢JS,我也喜欢HTML'.slice(3, 5)  // 'JS'
    
    1
  • slice(a, b) 参数 a 可以是负数

    '我喜欢JS,我也喜欢HTML'.slice(-4, -1)  // 'HTM'
    
    1
  • slice(a, b) 参数 a 必须小于参数 b

    '我喜欢JS,我也喜欢HTML'.slice(5, 2)  // '' (得到空串)
    
    1

substring、substr 和slice 对比总结

  • substring(a,b) 和 slice(a,b) 功能基本一致,都是得到从 a 开始到 b 结束(不包括b)的子串,区别:

    ① substring0可以自动交换两个参数位置,而slice0不行;

    ② slice0的参数a可以是负数,而substring0不行。

  • substr(a,b) 中参数b是子串长度,而不是位置编号

toUpperCase 和 toLowerCase

  • toUpperCase() 转为大写
  • toLowerCase() 转为大写

indexOf

  • indexOf() 方法返回某个指定的字符串值在字符串中首次出现的位置

  • 如果要检索的字符串值没有出现,则该返回 -1

    'abc'.indexOf('b')  // 1
    'abc'.indexOf('m')  // -1
    
    1
    2

# Boolean(布尔)类型

布尔型值只有两个:true 和 false,分别表示真和假

# undefined类型

一个没有被赋值的变量的默认值是undefined,而undefined 的类型也是 undefined。即:undefined 又是值,又是一种类型,这种类型只有它自己一个值。

typeof undefined;  // undefined
1

在变量声明提升时,变量的值也是undefined。

console.log(a);         // undefined
console.log(typeof a);  // undefined
var a = 10;
1
2
3

# null类型

  • null 表示“空”,它是“空对象”

  • 当我们需要将对象销毁、数组销毁或者删除事件监听时,通常将它们设置为 null

  • 用 typeof 检测 null 结果是 object

    typeof null;  // "object"
    
    1
  • 类型和 typeof 检测结果并不总是一一对应,比如数组用 typeof 检测结果也是 object

# 数据类型转换

# 数据类型转换

# 其他值->数字

Number() 函数将其他类型转为数字

image-20220718235309631

Number() 函数首字母大写,因为它是一个内置的构造函数。

parseInt() 函数将字符串转为整数

image-20220718235443072

parseFloat() 函数将字符串转为浮点数

image-20220718235636338

# 其他值->字符串

使用 String() 函数

image-20220719000011519

使用 toString() 方法

注意这里 toString() 的 方法,几乎所有的值都有 toString() 方法。

# 其他值->布尔值

使用 Boolean() 函数

image-20220719000257122

# (案例)小小加法计算器

这里需要注意的是用户输入的是字符串

// 让用户输入两个数字
var a = Number(prompt('请输入第一个数字'));
var b = Number(prompt('请输入第二个数字'));
// 计算两个数字的和
var sum = a + b;
// 弹出结果
alert('数字' + a + '加上数字' + b + '的结果是' + sum);
1
2
3
4
5
6
7

# 复杂数据类型简介

  • 除基本类型值外,S的世界中还有复杂数据类型。
  • 复杂数据类型都是“引用类型”,引用类型的特性将在数组章节介绍
编辑 (opens new window)
上次更新: 2023/06/04, 12:34:19
01-JS语法与变量
03-表达式与操作符

← 01-JS语法与变量 03-表达式与操作符→

最近更新
01
第01章-RabbitMQ导学
02-10
02
第02章-入门RabbitMQ核心概念
02-10
03
第03章-RabbitMQ高级特性
02-10
更多文章>
Theme by Vdoing | Copyright © 2020-2023 CodeAshen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式