IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript基础学习篇(五)——细说数据类型(上) -> 正文阅读

[JavaScript知识库]JavaScript基础学习篇(五)——细说数据类型(上)

细说数据类型

内存分配和数据类型

??简单来说,JavaScript 引擎中的内存可以分为两种:堆区栈区

??JavaScript 中的数据类型就可分为两大种:原始数据类型引用数据类型。原始数据类型存储在堆区,引用数据类型的指针存储在堆区,数据存储在栈区。

??原始数据类型又称基本数据类型,它包括UndefinedNullBooleanStringNumberSymbolBigint 等数据类型,其中SymbolBigint分别是 ES6 和 ES 11 才提出的。

??引用数据类型只有一种就是Object对象类型,为了方便理解,再分成ArrayFunction和普通对象Object

typeof 操作符

??因为 ECMAScript 的类型系统是松散的,所以需要一种手段来确定任意变量的数据类型。 typeof 操作符就是为此而生的。
对一个值使用 typeof 操作符会返回下列字符串之一:

undefined表示值未定义;

boolean表示值为布尔值;

string表示值为字符串;

number表示值为数值;

object表示值为对象(而不是函数)或 null;

function表示值为函数;

symbol表示值为符号;(ES6 提出)

bigint表示值为大整数。(ES11 提出)

    var demo;
    console.log(typeof (demo)); // undefined
    console.log(typeof (true)); // boolean
    console.log(typeof (123)); // number
    console.log(typeof ("123")); // string
    // 不再展示其他类型

??实际上,因为 typeof 是一个操作符而不是函数,可以不需要(),但是不加()容易让程序产生误解,所以最佳实践是添加()

Undefined 数据类型

??Undefined 类型只有一个值,就是特殊值undefined。当使用varlet声明了变量但没有初始化时,就相当于给变量赋予了undefined值:

var demo;
console.log(demo == undefined); // true
console.log(typeof (demo)); // undefined

??一般来说,永远不用显式地给某个变量设置undefined值。字面值undefined主要用于比较,而且在 ECMA-262第 3 版之前是不存在的。增加这个特殊值的目的就是为了正式明确空对象指针(null)和未初始化变量的区别。

举个例子:

let demo; // 这个变量被声明了,只是值为 undefined
// 确保没有声明过这个变量
// let age
console.log(demo); // "undefined"
console.log(age); // 报错

补充:

let demo; // 这个变量被声明了,只是值为 undefined
// 确保没有声明过这个变量
// let age
console.log(typeof (demo)); // "undefined"
console.log(typeof (age)); // "undefined"

??无论是声明还是未声明, typeof 返回的都是字符串"undefined"。逻辑上讲这是对的,因为虽然严格来讲这两个变量存在根本性差异, 但它们都无法执行实际操作。

PS:
??即使未初始化的变量会被自动赋予 undefined 值,但仍然建议在声明变量的同时进行初始化。
??这样,当typeof 返回"undefined"时,你就会知道那是因为给定的变量尚未声明,而不是声明了但未初始化(实际上使用未声明的变量会直接报错,除非声明提升)。

Null 类型

??Null 类型同样只有一个值,即特殊值 null。逻辑上讲, null值表示一个空对象指针,这也是给 typeof 传一个 null 会返回"object"的原因:

var demo = null;
console.log(typeof (demo)); // "object"

Boolean 类型

??Boolean(布尔值)类型是 ECMAScript 中使用最频繁的类型之一,有两个字面值:truefalse

??注意:布尔值字面量 truefalse 是区分大小写的,是两个严格的关键字,因此 True 和False(及其他大小混写形式)是有效的标识符,但不是布尔值。

Boolean() 布尔转换

??要将一个其他类型的值转换为布尔值,可以调用特定的Boolean()转型函数:

let demo = "Hello world!";
let demoAsBoolean = Boolean(demo);
console.log(demoAsBoolean); //true

??Boolean()转型函数可以在任意类型的数据上调用,而且始终返回一个布尔值。什么值能转换为truefalse 的规则取决于数据类型和实际的值。

??下表总结了不同类型与布尔值之间的转换规则。

数据类型转换为 true 的值转换为 false 的值
Booleantruefalse
String非空字符串“”(空字符串)
Number非零数值(包括无穷值)0、 NaN(参见后面的相关内容)
Object任意对象null
UndefinedN/A(不存在)undefined

理解以上转换非常重要,因为像 if 等流程控制语句会自动执行其他类型值到布尔值的转换。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:46:04  更:2021-07-14 10:47:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 2:42:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码