JS中的7种数据类型
- number:数字
- string:字符串
- bool:布尔值
- symbol:符号
- undefined:未定义
- null :空
- object:对象
1. number : 数字
写法
-
整数写法:1
-
小数写法:0.1
-
科学计数法:1.23e4
-
八进制写法(用得少):0123或00123或0o123
-
十六进制写法:0x3F或0X3F
-
二进制写法:0b11或0B11
特殊值
-
正0和负0:都等于0
-
无穷大:Infinity、+Infinity、-Infinity
-
无法表示的数字:NaN(Not a Number),但它是一个数字
-
isNaN()可以判断一个数是否为NaN,是返回false,不是返回true
console.log(isNaN(12)); // false
2. string:字符串
- 写法
单引号: '你好'
双引号: "你好"
反引号: `你好`
注意:引号不属于字符串的一部分,就像书名号不属于书名的一部分一样
- 转义
错误写法:
'it's ok' js引擎会认为'it'就结束了,后面的看不懂
正确写法:
'it\'s' ok' // 这就是转义
"it's ok"
`it's ok`
- 多行字符串(如果想在字符串里回车,用反引号很容易做到)
let s = `这里是
可以的
用反引号很容易做到`
- 字符串的长度:
String.length
'123'.length // 3
'\n\r\t'.length // 3
''.length // 0
' '.length // 1
- 通过下标读取字符:
String[index]
let s = 'hello',
s[0] // 'h'
注意:index从0开始
let s = 'hello'
s[5] // undefined, 居然不报错
s[4] // '0'
- base64转码(一般用来隐藏招聘启事里的简历)
windows.btoa : 正常字符串转为Base64编码的字符串
windows.atob: Base64编码的字符串 转为原来的字符串
3. bool:布尔值
只有两个值 true或false,注意大小写
- 下列运算符会得到bool值
否定运算:!value
相等运算:1===2、1!=2、3===4、3!=4
比较运算:1>2、1>=2、3<4、3<=4
- if 配bool
if语句常常需要判断真假
if(value){...}else{...}
- 五个falsy值: falsy就是相当于false但又不是false的值
undefined 、 null 、 0 、 NaN 、 ''
- bool型和number型相加的时候,true的值为1,false的值为0
console.log(true+1); // 2
console.log(false+1); // 1
4. symbol:符号
不怎么常用的数据类型
5. undefined:未定义
6. null :空
区别:
- 如果一个变量声明了,但没有赋值,那么默认值就是undefined,而不是null
- 如果一个函数,没有写return,那么默认return undefined,而不是null
- 前端程序员习惯上,把非对象的空值写成undefined,把对象的空值写成null,但这仅仅是习惯上的
- undefined更多是默认的空,null是主动的空
7. object:对象
较复杂的数据类型,单独讲
判断数据类型 typeof
var num = 10; console.log(typeof num); // number
var str = 'william'; console.log(typeof str); // string
var william = true; console.log(typeof william); // boolean
var a = undefined; console.log(typeof a); // undefined
var b = null; console.log(typeof b); // object
类型转换
1. number => string 数字转字符串
String(n)
n + ''
2. string => number 字符串转数字
Number(s)
parseInt(s) // 取整数
parseFloat(s) // 可以是小数
s - 0
+s
3. x => boll 转为布尔型
Boolean(x)
!!x
4. x => string 把任何东西转为字符串
String(x)
x.toString()