为什么要区分数据类型

数字和字符串为例
功能不同:数字是数字,字符串是字符串
数字能加减乘除,字符串不同
字符串能表示电话号码,数字不能(如果号码第一位为0会被省略)
存储形式不同:
JS中,数字是用64位浮点数的形式存储的
JS中,浮点数是用类似UTF8形式存储的(UCS-2)

如何存数字

10转2
举例:image.png
2转10
举例:image.png
用十六进制表示二进制
记住 8 4 2 1对应 XXXX,从右往左,每4位改写成1位,把大于9的数字改为ABCDEF
还可以用计算器的程序员模式,HEX表示16进制,BIN表示2进制,OCT表示8进制,DEC表示10进制

编号:48到57表示数字符号,48表示 0

JS中的数据类型

数字(number)、字符串(string)、布尔(bool)、符号(symbol)、 空(undefined)、空(null)、对象(object)
数组、函数、日期不是数据类型,都属于object

转义

\’ 表示 ‘
\’’ 表示 ‘’
\n 表示换行
\r 表示回车
\t 表示tab制表符
\ 表示 \
\uFFFF 表示对应的Unicode字符
\xFF 表示前256个 Unicode字符

五个false值

undefined null 0 NaN ‘’

undefined和null

没有本质上的区别
细节一:如果一个变量声明了,但没有赋值,那么默认值就是undefined,而不是null
细节二:如果一个函数没有写return,那么默认return undefined,而不是null
细节三:在前端程序员习惯上,把非对象的空值写为undefined,把对象的空值写为null

类型转换

number => string
String(n)
n + ‘’
string=>number
Number(s)
parseInt(s)/parseFloat(s)
x=>bool
Boolean(x)
!!x
x=>string
String(x)
x.toString()