JavaScript 数据类型

本文最后更新于:2024年3月18日 凌晨

JavaScript 数据类型

  • 值类型(基本类型):字符串(String),数字(Number),布尔(Boolean),对空(Null),未定义(Undefined),Symbol
  • 引用数据类型:对象(Object),数组(Array),函数(Function)

:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

JavaScript 拥有动态类型

  • JavaScript 拥有动态类型,这意味着相同的变量可用作不同的类型:
1
2
3
var x;        // x 为 undefined
var x = 5; // 现在 x 为数字。
var x = "John"; // 现在 x 为字符串。

String

  • 字符串是存储字符(比如 “Bill Gates”)的变量。
  • 字符串可以是引号中的任意文本,您可以使用单引号或双引号:
1
2
var carname="Volvo XC60";
var carname='Volvo XC60';
  • 您可以在字符串中使用引号,只要不匹配包围字符串的引号即可:
1
2
3
var answer="It's alright";
var answer="He is called 'Johnny'";
var answer='He is called "Johnny"';

Number

  • JavaScript 只有一种数字类型,数字可以带小数点,也可以不带:
1
2
var x1=34.00;      // 使用小数点来写。
var x2=34; // 不使用小数点来写。
  • 极大或极小的数字可以通过科学(指数)计数法来书写:
1
2
var y=123e5;   // 12300000
var z=123e-5; // 0.00123

NaN 属性

  • NaN 即非数值(Not a Number),NaN 属性用于引用特殊的非数字值,该属性指定的并不是不合法的数字。
  • NaN 属性与 Number.Nan 属性相同。
  • 提示:请使用 isNaN() 来判断一个值是否是数字,原因是 NaN 与所有值都不相等,包括它自己。

Boolean

  • 布尔(逻辑)只能有两个值:true 或 false
1
2
var x=true;
var y=false;
true false
字符串 非空
数组 非0 0
null null
undefined undefined
  • string

Array

  • 下面的代码创建名为 cars 的数组:
1
2
3
4
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
  • 或者(condensed array):
1
var cars=new Array("Saab","Volvo","BMW");
  • 或者(literal array):
1
var cars=["Saab","Volvo","BMW"];
  • 数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推。

Undefined和Null

null

  • 在 JavaScript 中 null 表示 “什么都没有”
  • null是一个只有一个值的特殊类型,表示一个空对象引用。
  • 你可以设置为 null 来清空对象:
1
var person = null;           // 值为 null(空),但类型为对象。

undefined

  • 在 JavaScript 中, undefined 是一个没有设置值的变量。
  • typeof 一个没有值的变量会返回 undefined
  • 任何变量都可以通过设置值为 undefined 来清空,类型为 undefined
1
person = undefined;          // 值为 undefined,类型是undefined

区别

  • null 和 undefined 的值相等,但类型不等:
1
2
3
4
typeof undefined             // undefined
typeof null // object
null === undefined // false
null == undefined // true

typeof

  • 你可以使用 typeof 操作符来检测变量的数据类型。
1
2
3
4
5
6
7
8
9
10
11
typeof "john"	//string
typeof 3.14 //number
typeof NaN //number
typeof Infinity //number
typeof false //boolean
typeof [1, 2, 3, 4] //object
typeof {name: 'john', age: 34} //object
typeof new Date() //object
typeof function () {} //function
typeof myCar //undefined
typeof null //object

constructor 属性

  • constructor 属性返回所有 JavaScript 变量的构造函数。
1
2
3
4
5
6
7
"John".constructor                 // 返回函数 String()  { [native code] }
(3.14).constructor // 返回函数 Number() { [native code] }
false.constructor // 返回函数 Boolean() { [native code] }
[1,2,3,4].constructor // 返回函数 Array() { [native code] }
{name:'John', age:34}.constructor // 返回函数 Object() { [native code] }
new Date().constructor // 返回函数 Date() { [native code] }
function () {}.constructor // 返回函数 Function(){ [native code] }

实例

  • 你可以使用 constructor 属性来查看对象是否为数组(包含字符串 “Array”):
1
2
3
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}