JavaScript共有7种数据类型:number
,string
,boolean
,symbol
,undefined
,null
,object
1. number
- 整数和浮点数
JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。 - Math.pow()
Math.pow()可以用来计算基数的指数次幂
//求2的3次方
Math.pow(2,3) //8
- 科学计数法
数值也可以采用科学计数法表示
123e3 //123000
- 数值的进制
JavaScript对整数提供四种进制的表示方式:十进制、十六进制、八进制、二进制
十进制:没有前导0的数值。
八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。(后来 ES5 添加了 0o11 语法)
十六进制:有前缀0x或0X的数值。
二进制:有前缀0b或0B的数值。
2.string
- 多行字符串
可以在每一行的尾部使用反斜杠
var longString = 'Long
long
long
string';
longString
// "Long long long string"
或者使用连接运算符+
var longString = 'Long '
+ 'long '
+ 'long '
+ 'string';
longString
// "Long long long string"
- 字符集
JavaScript使用Unicode字符集,JavaScript引擎内部,所有字符都用Unicode表示 - Base64转码
所谓 Base64 就是一种编码方法,可以将任意值转成 0~9、A~Z、a-z、+和/这64个字符组成的可打印字符。使用它的主要目的,不是为了加密,而是为了不出现特殊字符,简化程序的处理。btoa()
:任意值转为 Base64 编码atob()
:Base64 编码转为原来的值
var string = 'Hello World!';
btoa(string) // "SGVsbG8gV29ybGQh"
atob('SGVsbG8gV29ybGQh') // "Hello World!"
3.boolean
- boolean的值只有两个:true和false
a && b
在 a 和 b 都为 true 时,取值为 true;否则为 falsea || b
在 a 和 b 都为 false 时,取值为 false;否则为 true
4.undefined和null
null
与undefined
都可以表示“没有”,含义非常相似。
undefined == null
// true
- (规范)如果一个变量没有被赋值,那么这个变量的值就是 undefiend
- (习俗)如果你想表示一个还没赋值的对象,就用 null。如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)
5.object
- object 就是上面几种基本类型(无序地)组合在一起
- object 的 key 一律是字符串,不存在其他类型的 key
- object[''] 是合法的
- 属性的读取
读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。两者是有区别的
//如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。
var foo = 'bar';
var obj = {
foo: 1,
bar: 2
};
obj.foo // 1
obj[foo] // 2
- 查看属性
查看一个对象本身的所有属性,可以使用Object.keys
方法
var obj = {
key1: 1,
key2: 2
};
Object.keys(obj);
// ['key1', 'key2']
- 删除属性
delete
命令用于删除对象的属性,删除成功后返回true
var obj = { p: 1 };
Object.keys(obj) // ["p"]
delete obj.p // true
obj.p // undefined
Object.keys(obj) // []
- 属性是否存在
in
运算符用于检查对象是否包含某个属性,如果包含就返回true,否则返回false
var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true
- 属性的遍历
for...in
循环用来遍历一个对象的全部属性
var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
console.log('键名:', i);
console.log('键值:', obj[i]);
}
// 键名: a
// 键值: 1
// 键名: b
// 键值: 2
// 键名: c
// 键值: 3
注意:for...in
遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。for...in
不仅遍历对象自身的属性,还遍历继承的属性。
6.typeof操作符
typeof
运算符可以返回一个值的数据类型。
null和function比较特殊
typeof操作符.png