JS数据类型
2018-07-17 本文已影响0人
H_uan
七种数据类型:number string boolean symbol undefined null object
注意:没有 array 类型和function 类型。
1、number
- 整数和小数:1 1.1 .1
- 科学记数法:1.23e2
- 二进制:0b11
- 八进制:011(后来 ES5 添加了 0o11 语法)
- 十六进制:0x11
2、string
- 空字符串:''
- 多行字符串:
var s = '12345' +
'67890' // 无回车符号
或
var s = `12345
67890` // 含回车符号 es6写法,
3、boolean
boolean 的取值
只有两个值:true 和 false
a && b 在 a 和 b 都为 true 时,取值为 true;否则为 false(同真为真)
a || b 在 a 和 b 都为 false 时,取值为 false;否则为 true(同假为假)
4、symbol
Symbol 可以创建一个独一无二的值(但并不是字符串)。
方应杭:JS 中的 Symbol 是什么?
5、undefined 和 null
都表示没有值,至于 JS 为什么有两个表示「没有值」的东西,
可以从 JS 之父的 twitter 中知道当时他也挺纠结的:https://twitter.com/BrendanEich/status/333008305461006336
- (规范)如果一个变量没有被赋值,那么这个变量的值就是 undefiend
- (习俗)如果你想表示一个还没赋值的对象,就用 null。
如果你想表示一个还没赋值的字符串/数字/布尔/symbol(非对象),就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)
6、object
- object 就是上面几种基本类型(无序地)组合在一起,复杂型
- object 里面可以有 object
var name = 'fuck'; var person = { name: 'wh', 'child': { name: 'susan' }, // 最后这个逗号可有可无 }
- object 的 key 一律是字符串,不存在其他类型的 key (若没有加引号,则必须遵守标识符的命名规则)
- object[''] 是合法的
- object['key'] 可以写作 object.key
- 注意 object.key 与 object[key] 不同
object.key等价于object['key']
如:object[name] == object['fuck'] 结果是undefined - delete object['key']
- 'key' in object
var person = {'name':'frank'}
'name' in person
true
delete person.name //同时删除了value和key
true
'name' in person
false
person['name']
undefined
var person = {'name':'frank'}
undefined
person['name'] = undefined
undefined
person.name
undefined
'name' in person
true
xxx数据类型 | number | string | boolean | symbol | null | undefined | object | function |
---|---|---|---|---|---|---|---|---|
typeof xxx | 'number' | 'string' | 'boolean' | 'symbol' | 'object ' | 'undefined' | 'object' | 'function' |
注意:
- typeof null //'object'
- typeof undefined //'undefined'
- function 并不是一个类型
for...in...遍历对象
var person = {'name':'wh','age':18}
for(var key in person){
console.log(key,person[key])
}
name wh //结果本来是字符串,浏览器自动省略了引号
age 18