七种数据类型:number string boolean symbol undefined null object
注意没有 array 类型也没有 function 类型。
number
整数和小数:1 1.1 .1
科学记数法:1.23e2
二进制:0b11
八进制:011(后来 ES5 添加了 0o11 语法)
十六进制:0x11
string
空字符串:’’
多行字符串:
var s = ‘12345’ +
‘67890’ // 无回车符号
或
var s = 12345 67890
// 含回车符号
JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。
NaN 表示「非数」,NaN 是一个数字
JavaScript引擎不能自动识别编号大于0xFFFF的Unicode字符。JS允许在程序中使用Unicode编号表示字符,写成\uxxxx的形
式。’\u00A9’ 表示 “©”。var f\u006F\u006F 是合法的。
全局函数 btoa() 能将字符串转为Base64编码,全局函数 atob() 能将 Base64编码转为原来的编码。要将非ASCII码字符转为
Base64编码,必须中间插入一个转码环节。Base64是一种基于64个可打印字符来表示二进制数据的表示方法。
boolean 的取值
只有两个值:true 和 false
a && b 在 a 和 b 都为 true 时,取值为 true;否则为 false
a || b 在 a 和 b 都为 false 时,取值为 false;否则为 true
symbol
undefined 和 null
都表示没有值,至于 JS 为什么有两个表示「没有值」的东西,可以从 JS 之父的 twitter 中知道当时他也挺纠结的
(规范)如果一个变量没有被赋值,那么这个变量的值就是 undefiend
(习俗)如果你想表示一个还没赋值的对象,就用 null。如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)
object
object 就是上面几种基本类型(无序地)组合在一起
object 里面可以有 object
var person = {
name: ‘Frank’,
‘child’: {
name: ‘Jack’
}, // 最后这个逗号可有可无
}
object 的 key 一律是字符串,不存在其他类型的 key
object[’’] 是合法的
注意 object.key 与 object[key] 不同
object.key等价于object[‘key’]
查看一个对象本身的所有属性,可以使用Object.keys方法。
var obj = {
keyone: 1,
keytwo: 2
};
Object.keys(obj);
// [‘keyone’, ‘keytwo’]
delete object[‘key’]
‘key’ in object //false;
for…in 循环用来遍历对象
for…in 循环会跳过不可遍历的 key(比如:length)
for…in 循环不仅遍历对象自身的属性,还遍历继承的属性
typeof 操作符
类型 | string | number | boolean | symbol | undefined | null | object | function |
---|---|---|---|---|---|---|---|---|
typeof | ‘string’ | ‘number’ | ‘boolean’ | ‘symbol’ | ‘undefined’ | ‘object’ | ‘object’ | ‘function’ |
function 并不是一个类型