JS 数据类型

简介: JS 数据类型

JS 数据类型


JS 数据类型有:数字(number)、字符串(string)、布尔(bool)、符号(symbol)、空(undefined)、空(null)、对象(object)、bigint。

总结:“四基两空一对象”,还有一个是bigint是新增的。

注:数组、函数、日期属于特殊的对象

一、数值(number)

数值的存储方式

JS中,数字是用64位浮点数的形式存储的。(二进制)

网络异常,图片无法展示
|

其中符号占1位,指数部分有11位,范围从-1023到+1024,有效数字有 52 位,需要省略开头的 1 。 例如:0.5的存储方式是 0|-1|0 。

浮点数的范围

(1)最大值

  • 把指数部分11位和有效数字的52位全设为1(拉满),可得最大的二进制数字
  • 换成十进制为 Number.MAX_VALUE: 1.7976931348623157e+308

(2)最小值

  • 指数负方向拉满、有效数字最小1,得到最小的二进制数字
  • 换成十进制为Number.MIN_VALUE: 5e-324

精度

  • 最多只能到52+1个二进制位表示有效数字
  • 2^53对应的十进制是9后面15个零
  • 所以对于十进制来说15位数字都能精确表示
  • 16位有效数字如果小于90开头,也能精确表示
  • 91 10000000000001就存不下来

数值的表示法:

  • 整数 1
  • 小数 0.1
  • 科学计数法 1.23e4 (e4就是乘以10的4次方)
  • 八进制(用得少)0123,00123,0o123
  • 十六进制 0x3F 0X3F (用得少)
  • 二进制 0b11 或0B11 (用得少)

数值的进制

JavaScript 对整数提供四种进制的表示方法:十进制、十六进制、八进制、二进制

  • 十进制:没有前导0的数值
  • 八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。如0123或00123或0o123
  • 十六进制:有前缀0x或0X的数值。如0x3F或0X3F
  • 二进制:有前缀0b或0B的数值。如0b11或0B11

特殊数值

  • 正0 和 负0都等于 0, 但是是三个数
  • 无穷大: Infinity 、+Infinity 、-Infinity
  • 无法表示的数字:NaN(Not a Number),但他是一个数字 。(比如0除以0,返回NaN) NaN不等于任何值,包括NaN。

二、字符string

1、写法

  • 单引号 'hi'
  • 双引号 "hi"
  • 反引号 ``

引号不属于字符串的一部分

2、转义

例如 'it's ok' ,JS引擎会认为 'it' 就结束了。

正确写法

  • 转义: 前面加斜杠 \ ,例如 'it's ok'
  • 外面用双引号:"it's ok"
  • 外面用反引号

转义——用另一种写法表示你想要的东西

  • ' —— ' 单引号
  • " —— " 双引号
  • \n —— 换行
  • \r —— 回车
  • \t —— tab 制表符
  • \ —— \斜杠
  • \uFFFF —— 对应的Unicode 字符
  • \xFF —— 前 256 个Unicode 字符
  • 多行字符串:外面用反引号

3、字符串长度

string.length —— 即可看见字符串string的长度 例如:'\n\r\t'.length //值为3

通过下标可以读取字符(类似数组) 例如:let s='hello';s[0] //值为"h"

4、base64转码

  • window.btoa(字符串)—— 正常字符串转为Base64编码的字符串
  • window.atob(字符串) —— Base64编码的字符串转为原来的字符串

字符串的属性

注意:

字符串不该有属性!只有对象才有属性(原因之后再说)

三、布尔(bool)

只有两个值,true和false

下列运算符会返回布尔值:

  • 前置逻辑运算符: ! (Not)
  • 相等运算符:===!====!=
  • 比较运算符:>>=<<=

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true

  • undefined
  • null
  • false
  • 0
  • NaN
  • ''(空字符串)

这五个 falsy 值代表假的。(还有false)

四、undefined和null

undefined 和 null 是两种空类型,区别如下:

  • 声明变量但是没有赋值,默认值是undefined,不是null。
  • 函数没有return,那么默认return undefined,而不是 null。
  • 习惯上,非对象的空值写为undefined,把对象的空值写为 null。

五、symbol符号

JS 中的 Symbol 是什么

六、变量声明

三种声明方式

  • var a = 1 是过时的、不好用的方式
  • let a = 1 是新的,更合理的方式
  • const a = 1 是声明时必须赋值,且不能再改的方式
  • a = 1 最后这种方式是错误的,不准这样声明

let声明

  • 遵循块作用域,适用范围不能超过{}
  • 不能重复声明
  • 可以赋值,也可以不赋值
  • 必须先声明再使用
  • 全局声明的let变量,不会变成window属性
  • for循环配合let 有奇效

const声明

  • 跟let规则一样
  • 只有一条不同,声明时就要赋值,赋值后不能改
注意:声明变量的同时,也指定了类型,但是值和类型都可以随时变化

七、 类型转换

1、number => string

  • String(n)
  • n+''
  • ''+n

2、string => number

  • Number(s)
  • parseInt(s)
  • parseFloat(s)
  • s-0
  • +s

3、x => bool

  • Boolean(x)
  • !!x一个感叹号可把任何东西取反布尔值,再来一个就是反布尔值的反布尔值,也就是原始布尔值

4、X => string

  • String(x)
  • x.toString()
  • 数字1不可用上面的,因为默认1.后面应是小数。bug!
  • (1).toString()
  • 1..toString()
  • 1 .toString()

&&短路逻辑

和以往我的想法不一样,&&的值并不是true或者false, 它取第一个假值或者最后一个表达式的值

  • 1 && 2 的值是2
  • 1&& 2 && 3 && 0 && 4 的值是0

||短路逻辑

同理,||取第一个真值 或者最后一个表达式的值

  • 1||0||2||3 的值是1
  • 0|| 0 || 5的值是5
  • 网络异常,图片无法展示
    |

参考资料

内容参考 JavaScript 教程

有时间必看 JS秘密花园

关于 bigint 的详细介绍developer.mozilla.org/zh-CN/docs/…

相关文章
|
3月前
|
存储 JavaScript 对象存储
js检测数据类型有那些方法
js检测数据类型有那些方法
144 59
|
9天前
|
存储 JavaScript 前端开发
JavaScript中的数据类型以及存储上的差别
通过本文的介绍,希望您能够深入理解JavaScript中的数据类型及其存储差别,并在实际编程中灵活运用这些知识,以提高代码的性能和稳定性。
36 3
|
1月前
|
存储 JavaScript 前端开发
js中的数据类型
JavaScript 中的数据类型包括五种基本类型(String、Number、Undefined、Boolean、Null)和三种引用类型(Object、Array、Function,以及ES6新增的Symbol)。基本类型直接存储值,引用类型存储的是指向实际数据的内存地址。了解它们的区别对于掌握 JavaScript 的变量赋值和函数传参至关重要。
24 1
|
2月前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
115 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
2月前
|
JavaScript 前端开发 开发者
【干货拿走】JavaScript中最全的数据类型判断方法!!!!
【干货拿走】JavaScript中最全的数据类型判断方法!!!!
29 1
|
2月前
|
存储 JavaScript 前端开发
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
52 0
|
3月前
|
JavaScript 前端开发
JavaScript基础知识-基本数据类型和引用数据类型
关于JavaScript基础知识的文章,主要介绍了基本数据类型和引用数据类型。
46 2
JavaScript基础知识-基本数据类型和引用数据类型
|
3月前
|
存储 前端开发 JavaScript
前端基础(三)_JavaScript数据类型(基本数据类型、复杂数据类型)
本文详细介绍了JavaScript中的数据类型,包括基本数据类型(Number、String、Boolean、Undefined、Null)和复杂数据类型(Object),并解释了如何使用`typeof`操作符来识别变量的数据类型。同时,还讨论了对象、函数和数组等复杂数据类型的使用方式。
71 2
|
4月前
|
JavaScript 前端开发
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
这篇文章是JavaScript基础与实战教程的第一部分,涵盖了JavaScript的基本语法、标识符、数据类型以及如何进行强制类型转换,通过代码示例介绍了JS的输出语句、编写位置和数据类型转换方法。
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
|
4月前
|
开发者 图形学 开发工具
Unity编辑器神级扩展攻略:从批量操作到定制Inspector界面,手把手教你编写高效开发工具,解锁编辑器隐藏潜能
【8月更文挑战第31天】Unity是一款强大的游戏开发引擎,支持多平台发布与高度可定制的编辑器环境。通过自定义编辑器工具,开发者能显著提升工作效率。本文介绍如何使用C#脚本扩展Unity编辑器功能,包括批量调整游戏对象位置、创建自定义Inspector界面及项目统计窗口等实用工具,并提供具体示例代码。理解并应用这些技巧,可大幅优化开发流程,提高生产力。
445 1