js里共有其中基本数据类型:number、string、boolean、undefined、null、object、symbol.
- number
- 整数和小数:(比如1和3.14)
- 科学记数法:1.23e2
- 二进制:0b11
- 八进制:011(后来 ES5 添加了 0o11 语法)
- 十六进制:0x11
- string
- 空字符串:''
- 多行字符串:
var s = '12345' +
'67890' // 无回车符号
或
var s = `12345
67890` // 含回车符号
- boolean
表示真伪的两个特殊值,即true(真)和false(假)
- a && b 在 a 和 b 都为 true 时,取值为 true;否则为 false
- a || b 在 a 和 b 都为 false 时,取值为 false;否则为 true
下列运算符会返回布尔值:
两元逻辑运算符: && (And),|| (Or)
前置逻辑运算符: ! (Not)
相等运算符:===,!==,==,!=
比较运算符:>,>=,<,<=
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
undefined
null
false
0
NaN
""或''(空字符串)
undefined和null
undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。
null:表示空值,即此处的值为空。
i. (规范)如果一个变量没有被赋值,那么这个变量的值就是undefined
ii.(习俗)如果你想表示一个还没赋值的对象,就用 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.keys方法。)
var obj = {
key1: 1,
key2: 2
};
Object.keys(obj);
// ['key1', 'key2']
注意 object.key 与 object[key] 不同
delete object['key'] (delete命令用于删除对象的属性,删除成功后返回true。)
'key' in object
(in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。)
var obj = { p: 1 };
'p' in obj // true
(in运算符的一个问题是,它不能识别哪些属性是对象自身的,哪些属性是继承的。)
var obj = {};
'toString' in obj // true
上面代码中,toString方法不是对象obj自身的属性,而是继承的属性。但是,in运算符不能识别,对继承的属性也返回true。
6.symbol
Symbol 的用途:Symbol 可以创建一个独一无二的值(但并不是字符串)。
即:Symbol 生成一个全局唯一的值。
js中的symbol
7.typeof操作符
xxx 的类型 | string | number | boolean | symbol | undefined | null | object | function |
---|---|---|---|---|---|---|---|---|
typeof xxx | 'string' | 'number' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'object' | 'function' |
注意 function 并不是一个类型!
文章著作权归irwenjing所有,转载须说明来源