JS的7种数据类型:
number、string、boolean、symbol、null、undefined、object
转义字符
转义字符的字符长度是1
' 单引号
\n 回车
\t 制表符
\ \的转义符
多行字符串
let a = "hello,world \ 如果\后面有空格,这种写法就会报错
hello,world"
----------------------------------------------------
let a = "hello,world" + 用加号连接多行字符串更好
"hello,world"
-----------------------------------------------------
let a = `hello,world 用反引号可以直接书写多行字符串,注意空格也会算作字符
hello,world`
布尔 boolean
布尔是一个逻辑学家,数学家。
boolean 只有两个值 true false
&& 与 均为true返回true
|| 或 一个为true返回true
symbol
null类型
一个值 null
undefined类型
一个值 undefined
bug:都表示什么都没有,没有值。但是这是语言设计的错误。
两者细微的差别:1、变量没有赋值——undefined
2、如果想有一个对象,但是现在还不想赋值,就推荐给一个null值—— null
如果想有一个非对象,不想赋值,可以给undefined
object 对象
除对象外的6种类型,都叫基本类型,
object叫复杂类型,复杂类型是由简单类型组成的,array、function也是对象
例如:
let person = {
name : 'frank',
age : 18,
married : true,
children : {name:'xxx',age:1}
}
key : value 键值对
在书写键值对时,如果key不加引号,就必须遵循变量名的命名规则。
person['name'] //frank 这种写法必须加上引号,如果没有引号就会将name作为变量,报错 undefined
当key的书写符合标识符(也就是变量名)的条件下:
person['name'] === person.name (特例)
删除键值对
delete person['name'] //同时删除key和value
遍历键值对
let person = {
name : "lmj"
age : "18"
}
for (key in person){
console.log(key)
} //name age
那怎么遍历值(value)呢?
先试试person.key
for (key in person){
console.log(person.key)
} //报错undefined
为什么person.key不行呢,因为person.key === "key"
而person这个对象中没有键(key)名是"key",也就是说key会被当作一个你想访问的键值对的键名,但是这个键名是不存在的
for (key in person){
console.log(person[key])
} //lmj 18
这里的key不加引号,就会识别为变量key,key中存储的是字符串name和age,所以就返回对应的值lmj 18
<值得注意>: 任何情况下不加引号都可能会当作一个变量,所以需要严格区分引号和不加引号的情况
typeof 运算符
用于返回数据的类型是什么
bug:
typeof null // 'object'
let fn(){}
typeof fn //'function'