基本数据类型
-
数字Number
常规数字和NaN
-
字符串String
所有用单引号,双引号,反引号(反引字符串)包起来的
-
布尔Boolean
True/False
- 空对象指针Null
- 未定义undefined
- 引用数据类型
- 对象数据类型 object
- {} 普通对象
- [] 数组对象
- /1?[1-9]$/ 正则表达式
- Math 数学函数对象
- Data 日期对象
- …
- 函数数据类型 function
- 对象数据类型 object
3.1数字类型
包含:常规数字,NaN
3.11NaN
NaN:not a number(不是一个数字,但是确实是一个数字类型。)
NaN和任何值(包括自己)都不相等。
3.12 is NaN
检测一个值是否为非有效数字。
使用语句: isNaN([val])
例如:
alter(isNaN(10));->false
alter(isNaN('AAA'));->true
tips:isNaN在检测一个值时,会先把一个值转变为number类型的,在进行判断是否为数字。
例子1:
alter(isNaN('10'));->false
具体的转化步骤:
1.number('10') => 10;
2.isNaN(10) => false;
例子2:
alter(isNaN('AAA'));->true
具体的转化步骤:
1.number('AAA') => NaN;
2.isNaN(NaN) => true;
3.13把其他类型的值转化为数字
number()
parseInt()
parseFloat()
要注意的是number和parseInt()、parseFloat()走的不是一个机制。number()是底层机制,parseInt()、parseFloat()是方法。
- number([val])
1.把字符串转化为数字,只要字符串中包含任何一个非有效数字字符(一个小数点除外),即为NaN。空字符串会变为数字0.
布尔转化为数字:
number(true)=>1
number(false)=>0
Null转为数字:
number(Null)=>0
undefined转为数字:
number(undefined)=>NaN
2.把引用数据类型转换为数字,是先用string()方法转为字符串,再用number.
举例:
number({name:“xxx”})=>NaN
number({})=>NaN
number([])=>0(数组为空,空为0)
number({[10])=>10(数组里的是数字)
number({[10,23])=>NaN(因为有,)
3.如果想把一个字符串里的数字取出来单独转化为数字,可用以下两种方法:
parseInt([val])=>(这个是取其中的整数部分)
parseFloat([val],[进制])=>(这个是取其中的浮点数部分) (其中进制可不写)
parseInt/parseFloat( [val], [进制]):两个转换为数字的方法,对于字符串来
说,它是从左到右依次查找有效数字字符,直到遇到非有效数字字符,停止查找(不
管后面是否还有数字,都不在找了),把找到的当做数字返回。
例如
let str = "12.5px";
alert(parseInt(str));=>12
alert(parseFloat(str));=>12.5
alert(parseFloat("widt:12.5px"));=>NaN(因为查找的第一个字符是w,w不是有效字符,所以停止查找,返回NaN)
3.2字符串数据类型
所有用单引号,双引号,反引号包起来的都是字符串
3.21 把其他类型转化为字符串
-
[val].toString()
-
字符串拼接
具体使用:
(true).tostring();=> “true”-
Null与undefined禁止使用。
-
在用数字转为字符串时要用变量。例如:
-
a = 12;
a.tostring();=> “12”
像
- 12.tostring(); 是错误的。
-
总结:一般来说,转为字符串就是在数据外加一层双引号,除了null,undefined,{name:xx}这三种情况。
3.22 字符串的拼接
四则运算法则中,除加法外都是数学计算,只有加法可能存在字符串拼接。(即,一旦遇到字符串则不是加法运算,而是字符串拼接)。
let a = 10 + null + true + [] + undefined + '珠峰’ + null + [] + 10 + false;
10+null->10+0->10
10+true->10+1->11
11+[1.->11+-> '11' 空数组变为数字,先要经历变为空字串.遇到字符串,啥都别想了,直接变为字符串拼接
'11' + undefined -> ' 11undefined '
...
结果:'1lundefined珠峰null10false'
console.log(a);
3.3Null和undefined
Null和undefined都是代表没有
Null代表的是意料之中(一般都是开始不知道值,我们手动先设置为null,后期再给予赋值操作,也就是已知数据类型 )
一般最好用null作为初始的空值,因为其他的数字或者其他类型不是空值,在栈内存中有自己的存储空间undefined代表的是意外之外。也就是一个没有赋值的变量。(即没有定义数据类型)
引用数据类型
- 数组
- object
3.4 object-普通对象
{[key]:[value],…} 任何一个对象都是由零到多组键值对(属性名:属性值)组成的。属性名不能重复
=- ↩︎