JS里的7种数据类型

JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 新增的第七种 Symbol 类型的值,不描述。)

  • 数值(number):整数和小数(比如1和3.14)
  • 字符串(string):文本(比如Hello World)。
  • 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
  • undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
  • null:表示空值,即此处的值为空。
  • 对象(object):各种值组成的集合。
  • Symbol(符号):https://developer.mozilla.org/zh-CN/docs/Glossary/Symbol

string 表示可以用

1
2
' '//空字符串
" "//空字符串

转义符号为\

1
2
3
4
5
6
var a = "'"//单引号
var a = '"'//双引号
var a = '\''//单引号
var n = '\n'//回车
var t = '\t'//Tab(制表符)
var b = '\\'//表示\符号

多行字符串表示

1
2
3
4
5
//不是字符串里有回车
var s = '12345\
67890'//坑人语法不使用
var s2 = '12345'
'67890' //易报错5之后有看不见的空格

以上两种不建议使用

1
2
var s3 = '12345'+
'67890'

==建议使用这个语法==

在ES6中有个新的语法特性为:

1
2
var s4 = '12345  //此处5后面有个回车
67890'//实际为11个字符包含一个回车

关于null和undefined

  1. 变量没有值-undefined(语法)
  2. 有一个对象objest,现在不想赋值-null

有一个非对象,不想赋值-undefined

对象也是哈希表
关于命名

1
2
3
4
person['name']
person[name]
person.name
//下面两种符合标识符命名规则的情况下3种相等

typeof 运算符

JavaScript 有三种方法,可以确定一个值到底是什么类型。

typeof运算符
instanceof运算符
Object.prototype.toString方法
instanceof运算符和Object.prototype.toString方法。这里介绍typeof运算符。

typeof运算符可以返回一个值的数据类型。

数值、字符串、布尔值分别返回number、string、boolean。

1
2
3
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"

函数返回function。

1
2
3
function f() {}
typeof f
// "function"

undefined返回undefined。

1
2
typeof undefined
// "undefined"

利用这一点,typeof可以用来检查一个没有声明的变量,而不报错。

1
2
3
4
5
v
// ReferenceError: v is not defined

typeof v
// "undefined"

上面代码中,变量v没有用var命令声明,直接使用就会报错。但是,放在typeof后面,就不报错了,而是返回undefined。

实际编程中,这个特点通常用在判断语句。

1
2
3
4
5
6
7
8
9
10
// 错误的写法
if (v) {
// ...
}
// ReferenceError: v is not defined

// 正确的写法
if (typeof v === "undefined") {
// ...
}

对象返回object。

1
2
3
typeof window // "object"
typeof {} // "object"
typeof [] // "object"

上面代码中,空数组([])的类型也是object,这表示在 JavaScript 内部,数组本质上只是一种特殊的对象。这里顺便提一下,instanceof运算符可以区分数组和对象。instanceof运算符的详细解释,请见《面向对象编程》一章。

1
2
3
4
5
6
var o = {};
var a = [];

o instanceof Array // false
a instanceof Array // true
null返回object。
1
typeof null // "object"

null的类型是object,这是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。

参考链接