JS 里的数据类型

145 阅读3分钟

数据类型(最新的 ECMAScript 标准定义了 7 种数据类型)

  • number

JavaScript 能够表示的数值范围为21024到2-1023(开区间),超出这个范围的数无法表示,超过这个区间就是正向溢出,会显示“infinity”,小于最小的数为 负向溢出,直接表示为0;

  • string

字符串类型用于表示文本数据。它是一组16位的无符号整数值的“元素”。在字符串中的每个元素占据了字符串的位置。第一个元素的索引为0,下一个是索引1

  • boolean

布尔表示一个逻辑实体,可以有两个值:true 和 false。

  • symbol

符号类型是唯一的并且是不可修改的, 并且也可以用来作为Object的key的值

  • null

Null 类型只有一个值: null;当有一个对象,现在还未赋值,就为null;

  • undefined

undefined 类型只有一个值: undefined;当变量没有值,或者一个空对象不给值时,就为undefined;

  • object

对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

delete命令

delete命令用于删除对象的属性,删除成功后返回true。

var obj = { p: 1 };
Object.keys(obj) // ["p"]

delete obj.p // true
obj.p // undefined
Object.keys(obj) // []

in 运算

in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。
注意:in运算不能识别哪些属性是对象自身的,哪些属性是继承的

var obj = { p: 1 };
'p' in obj // true

for...in 运算

for...in循环用来遍历一个对象的全部属性。
注意:
1.它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
2.它不仅遍历对象自身的属性,还遍历继承的属性。

var obj = {a: 1, b: 2, c: 3};

for (var i in obj) {
  console.log(obj[i]);
}
// 1
// 2
// 3

typeof

使用 typeof 操作符可判断对象类型

var a = '好好学习'
typeof a
// 'string'

转义

反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。 需要用反斜杠转义的特殊字符:

\0 :null(\u0000)
\b :后退键(\u0008)
\f :换页符(\u000C)
\n :换行符(\u000A)
\r :回车键(\u000D)
\t :制表符(\u0009)
\v :垂直制表符(\u000B)
\' :单引号(\u0027)
\" :双引号(\u0022)
\\ :反斜杠(\u005C)

反斜杠的特殊用法:

'\251' // "©"
'\xA9' // "©"
'\u00A9' // "©"

'\172' === 'z' // true
'\x7A' === 'z' // true
'\u007A' === 'z' // true

字符集

JavaScript 使用 Unicode 字符集。JavaScript 引擎内部,所有字符都用 Unicode 表示。 JavaScript 不仅以 Unicode 储存字符,还允许直接在程序中使用 Unicode 码点表示字符,即将字符写成\uxxxx的形式,其中xxxx代表该字符的 Unicode 码点。比如,\u00A9代表版权符号

Base64 转码

btoa():任意值转为 Base64 编码 atob():Base64 编码转为原来的值 要将非 ASCII 码字符转为 Base64 编码,必须中间插入一个转码环节,再使用以上两个方法。

数值的进制

  • 十进制:没有前导0的数值。
  • 八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯 数字的数值。
  • 十六进制:有前缀0x或0X的数值。
  • 二进制:有前缀0b或0B的数值。

查看所有属性

  • 想知道一个对象有哪些 key,应该用 object.keys
var obj = {
  key1: 1,
  key2: 2
};

Object.keys(obj);
// ['key1', 'key2']

属性的操作-读取的操作

读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。

var obj = {
  p: 'Hello World'
};

obj.p // "Hello World"
obj['p'] // "Hello World"

请注意,如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。

var foo = 'bar';

var obj = {
  foo: 1,
  bar: 2
};

obj.foo  // 1
obj[foo]  // 2