JavaScript 中共有七种内置数据类型
number(数字)string(字符串)boolean(布尔值)symbol(符号)null(空值)undefined(未定义)object(对象)
一、数字 number
数字的特殊值有:
-
0,+0,-0; -
无穷大
Infinity、正无穷大+Infinity、负无穷大-Infinity; -
无法表达的数字 ——
NaN;
二、字符string
1、写法
'hi' // 单引号
"hi" // 双引号
`hi` //反引号
引号不属于字符串的一部分
2、转义
例如 'it's ok' ,JS引擎会认为 'it' 就结束了。
正确写法
- 转义: 前面加斜杠 \ ,例如 'it's ok'
"it's ok" // 外面用双引号
`it's ok` //-外面用反引号
转义——用另一种写法表示你想要的东西
- ' —— ' 单引号
- " —— " 双引号
- \n —— 换行
- \r —— 回车
- \t —— tab 制表符
- \b —— 空格
- \ —— 斜杠
- \uFFFF —— 对应的Unicode 字符
- \xFF —— 前 256 个Unicode 字符
- 多行字符串:外面用反引号
3、多行字符串
- 在字符串里输入回车
`let s =`用反引号
就可以实现
此操作`
4、字符串长度
写法:string.length
例如:'\n\r\t'.length 值为3
通过下标可以读取字符(类似数组)
例如:let s='hello';s[0] //值为"h"
5、字符串拼接
写法:字符串 + 任何类型 = 拼接之后的新字符串
只要有字符串和其他类型相拼接,最终的结果是字符串类型。
1、字符串”相加” eg:’hello’ + ‘ ’ + ‘world’ = hello world
2、数值字符串”相加” eg:’100’ + ‘100’ = 100100
3、数值字符 串+ 数值 eg:’12’ + 12 = 1212 口诀:数值相加,字符相连
6、base64 转码
(一般用来隐藏招聘启事里的简历邮箱)
-
window.btoa正常字符串转为base64编码的字符串 -
window.atobbase64编码的字符串转为原来的字符串
三、布尔bool (true/false)
下列运算符会得到 bool 值
-
否定运算
!value -
相等运算
1 == 2、1 != 2、3 === 4、3 !== 4 -
比较运算
1 > 2、1 >= 2、3 < 4、3 <= 4
if语句 配 bool
if(value){...}else{...}
if 语句常常需要判断真假,如果value不是bool属性怎么办?
五个 falsy 值
undefinednull0NaN''(空字符串) 这五个 falsy 值代表假的。(还有false)
四、undefined和null
undefined 和 null 是两种空类型,区别如下:
声明变量但是没有赋值,默认值是undefined,不是null。
函数没有return,那么默认return undefined,而不是 null。
习惯上,非对象的空值写为undefined,把对象的空值写为 null。
undefined和数字型相加,输出结果是NaNnull和数字型相加,输出结果为原本的数字
五、符号 symbool (很少用)
六、变量声明
三种声明方式:
var a=1 //过时
let a=1 //let 是新的更合理的方式,可声明局部变量
const a=1 //声明时必须赋值,且不能再更改
let声明和const 声明
- 遵循块作用域,即使用范围不能超出 { };
- 不能重复声明;
- 可以赋值,也可以不赋值;
- 必须先声明再使用,否则会报错;
- 全局声明的let变量,不会变成window的属性。
const声明和let几乎一样,只有一条不一样:声明时就要赋值,且赋值后不能再改。
七、类型转换
1、number=> string
以 var n =1为例:
- 方法一:
String(n) - 方法二:
n + ''(空字符串)
没有更改 n 的值,只是创造了新的值
2、stringr=> number
以var s = '123'为例:
- 方法一:
Number(s) - 方法二:
s-0 - 方法三:
+s - 方法四:
parseInt(s)/parseFloat(s)
没有更改 s 的值,只是创造新的值。
3、x => bool
- 方法一:
Boolean(x) - 方法二:
!!x
Boolena(1) //ture
Boolena(0) //false
!!1 //ture
!!0 //false
4、x => string
-
方法1:String(x)
-
方法2: x.toString()
八、对象 object
定义:无序的数据集合,键值对的集合
写法:
let obj = { 'name': 'frank', 'age': 18 } //简单写法
let obj = new Object({'name': 'frank'}) //正规写法
console.log({ 'name': 'frank, 'age': 18 })
- 键名是字符串,不是标识符,可以包含任意字符
- 引号可省略,省略之后就只能写标识符
- 就算引号省略了,键名也还是字符串(重要) 如何知道键是字符串呢?
用 Object.keys(obj)可以打印出obj的所有key。
- 变量属性名 如何用变量做属性名 之前都是用常量做属性名
let a = 'name'
let obj = { a : 'frank'} // 这样写,属性名为 'a'
let obj = { [a] : 'frank' } // 这样写,属性名为 'name'
对比
- 不加 [ ] 的属性名会自动变成字符串
- 加了 [ ] 则会当做变量求值
- 值如果不是字符串,则会自动变成字符串