【冰山白皮书】JS中的布尔 数字 字符串

17次阅读

共计 1794 个字符,预计需要花费 5 分钟才能阅读完成。

关于我们
QQ 答疑交流群: 600633658
我们的链接:
知乎 掘金 今日头条 新浪微博 前端网 思否 简书 B 站
布尔类型
布尔是什么
乔治·布尔(George Boole,1815.11.2~1864),1815 年 11 月 2 日生于英格兰的林肯。19 世纪最重要的数学家之一,出版了《逻辑的数学分析》,这是它对符号逻辑诸多贡献中的第一次。1854 年,他出版了《思维规律的研究》,这是他最著名的著作。在这本书中布尔介绍了现在以他的名字命名的布尔代数。计算机基于逻辑运算,为纪念布尔而改名为布尔运算。
布尔运算的结果称之为布尔值
布尔类型的值

true
false

布尔类型的命名

bool(常用名)
boole(人名)
boolean(布尔数学体系)

用途
主要用于判断或者作为比较的结果
布尔类型转换
JS 中所有的值都可以转换成布尔类型 使用 Boolean()或者 !!(两个感叹号)
可以转化成 false 的值
只有 6 个:

undefined
null
0
-0
NaN

数字类型
整数的表示
十进制,八进制(0 开头),十六进制(0x 开头)
整数的范围
-253~253
整数的使用建议

使用十进制,少用 16 进制,不用 8 进制
不要使用太大或者太小的整数,长度不要超过 16 位

浮点数的表示

小数点前可以没有数字,默认为 0。CSS 中同样适用
小数点后可以没有数字(浮点数占用的内存空间为整数的两倍,计算机为了节约内存会自动将小数点后没有数字的浮点数转换成整数)
小数点后六个 0 以上的浮点数自动转换为指数

0.1+0.2 不等于 0.3 深入讲解
JS 浮点数计算标准
IEEE754
IEEE 是什么
电气和电子工程师协会 (IEEE,全称是 Institute of Electrical and Electronics Engineers) 是一个国际性的电子技术与信息科学工程师的协会,是目前全球最大的非营利性专业技术学会,其会员人数超过 40 万人,遍布 160 多个国家。IEEE 的两个前身 AIEE(美国电气工程师协会)成立于 1884 年,IRE(无线电工程师协会)成立于 1912 年
IEEE 成就

在各个领域制定上千个标准(802,80211)
发表文献占全球文献的三分之一
设立 40 多个专业分会
每年主办 300 场以上技术会议
名人云集

IEEE754
浮点数算数标准,全称二进制浮点数算数标准
浮点数的表示形式
单精度(32 位)双精度(64 位,JS 使用)延伸单精度 延伸双精度
0.1+0.2!=0.3 的原因
十进制转二进制引起的误差(二进制无法表示 0.1 和 0.2)
类似的举例

1 米 = 3 尺
1 米!= 1 尺 + 2 尺

小数使用建议
永远不要使用两个经过计算的小数做比较
如何进行小数的比较

先乘 10 的 N 次方转换成整数在除 10 的 N 次方转化成小数。10 的 N 次方的范围(虽然有限,但是足够大,300 多次方)
使用 toFixed()函数,四舍五入保留 N 位小数。

保持书写一致

17.4530.9——47.114999——toFixed(2)——47.11
0.917.453——47.115————toFixed(2)——47.12

不合理的数学计算
在 JS 中只要是数字就可以参与运算,无论是否满足数学逻辑 x /0——Infinity 0/0——NaN
NaN
不等于任何数字的数字。
NaN 不等于 NaN(面试坑)
判断 NaN
isNaN(),返回布尔类型
用途是判断参数是否可以转换成数字
数字类型转换
JS 中所有的值都可以转换成数字类型,使用 Number()或 +
数字类型转换场景
目的只有一个,用于计算,将后台传递的数据,从字符串转换为数字并参与计算
取整运算
parseInt(),更简单的取整 |0
字符串
什么是字符串
如果一个数据在代码中被引号引上,他就是一个字符串
‘123’,’undefined’,’ture’
单引号还是双引号?
都可以,推荐使用单引号,因为 HTML 默认使用双引号
Unicode 编码
字符串中可以使用 Unicode 编码 u 开头,
EXP:
\u03a3
\u03c0

常用的转义符
n \ ‘ ”
字符串的属性

index
length(回顾调用属性原理)

长度误区
汉字长度为 1,转义符长度为 1,Unicode 编码长度为 1
字符串类型转换
JS 中所有的值都可以转换成字符串,使用 String()或与一个空字符串相加
原始类型转化总结

都有和自己数据类型同名的方法
首字母都大写
传入的数据都可以是任何数据类型
结果都是对应的数据类型并且可以分为两种(true false,正常数字 非正常数字,文本 “[object Object]”)

正文完
 0