JS共有七种数据类型:
- number/数值
- string/字符串
- boolean/布尔
- symbol/符号
- null
- undefined
- object/对象
number/数值
十进制
1 / 1.1 / 1.23e2
二进制
ob开头,不分大小写
ob1 > 1
0b10 > 2
0B10 > 2
八进制
0开头
011 > 8
十六进制
OX开头
0x11 > 17
String/字符串
‘你好’、“你好”
“” 、 ‘’ : 空字符length为0;
" " 、 ’ ’ : 空格字符串length为1;
转义
var a = ' ' ' //出错
var a = " ' " //单引号
var a = ' \' ' //单引号
\ 为转义符,让浏览器知道后边不是结束的符号;
var a = ' \\ ' //表示一个\
var n = '\n' //回车
var t = '\t' //Tab制表符
多行命令行
JS学习的是命令行的规则。当想换行时:
- var s1=‘12345\
67890’
//坑人语法,问题如下: - var s2 = ‘12345\空格空格空格
67890’
//空格看不到,报错; - 尽量采用以下的易读语法:
var s3 = ‘12345’ +
‘67890’ - ES6新特性:
var s4 = [`反引号] 12345[回车]
67890[反引号]
boolean/布尔
- 历史:布尔/数学家/逻辑学/下雨/上课/没带伞/肺病/去世;
- true真/false假
- && 与/ || 或
symbol
搜索“方应杭 symbol”
null & undefined
- null类型 : 一个值为null;
undefined类型 : 一个值为undefined; - 都表示什么都没有,JS之父产生的bug;
- 区别:
- 变量没有值时,用undefined;
- 惯例是:
有一个对象object,现在不想赋值,用null;
var object = null
有一个非对象,不想赋值,建议初始化为undefined;
var n
=var n = undefined
即一般情况下:null表示空对象;undefined表示空“非对象”。
object/对象/哈希表
-
复杂类型由以上简单类型组成;
-
var person = {
‘name’:‘frank’,
‘age’:18,
‘gender’:‘male’,
‘children’:{name:‘xxx’,age:1}
‘self’:person
} -
读取:person[‘name’] ,
引号里符合标识符规范时,可以:
person.name -
方括号里单引号不能删
var name = 'jack'
person[name] //报错
person[name]
=person['jack']
,不存在,undefined;
'' : 'frank'
可以加入对象;
person[''] = 'frank'
同理'a[空格]b' = 'frank'
也可以加入对象;9a : 'frank
不可以加入对象,
当key不加引号时,命名就必须按照标识符规范原则;
delete、in、for in 和 typeof
delete :将键、值同时清空;
delete person['name']
person.name //undefined (无value)
'name' in person //false (无key)
遍历对象:
for (var key in person){
console.log(key)
}
打出key: name,age…
for (var key in person){
console.log(person[key])
}
打出value:frank,18…
错误:
console.log(person.key)
等于person['key']
,并不存在key这个键。
typeof:
特殊情况:
typeof null //object
typeof function //function