JavaScript 数据类型
在本教程中,您将了解 JavaScript 中可用的数据类型。
JavaScript 中的数据类型
数据类型基本上指定了可以在程序中存储和操作的数据类型。
JavaScript中有六种基本数据类型,可以分为三大类:原始(或primary)、复合(或reference)和特殊数据类型。 String、Number 和 Boolean 是原始数据类型。 对象、数组和函数(它们都是对象类型)是复合数据类型。 而 Undefined 和 Null 是特殊的数据类型。
原始数据类型一次只能保存一个值,而复合数据类型可以保存值的集合和更复杂的实体。 让我们详细讨论它们中的每一个。
字符串数据类型
string 数据类型用于表示文本数据(即字符序列)。 字符串是使用单引号或双引号围绕一个或多个字符创建的,如下所示:
var a = 'Hi there!'; // 使用单引号
var b = "Hi there!"; // 使用双引号
只要引号与封闭引号不匹配,就可以在字符串中包含引号。
var a = "Let's have a cup of coffee."; // 双引号内的单引号
var b = 'He said "Hello" and left.'; // 单引号内的双引号
var c = 'We\'ll never give up.'; // 用反斜杠转义单引号
您将在 JavaScript 字符串 章节中了解有关字符串的更多信息。
数值数据类型
number 数据类型用于表示带或不带小数位的正数或负数,或使用指数符号编写的数字,例如 1.5e-4(相当于 1.5x10-4)。
var a = 25; // 整数
var b = 80.5; // 浮点数
var c = 4.25e+6; // 指数符号,与 4.25e6 或 4250000 相同
var d = 4.25e-6; // 指数符号,与 0.00000425 相同
Number 数据类型还包括一些特殊值,它们是:Infinity
, -Infinity
和 NaN
。 Infinity 表示数学上的无穷 ∞
,它大于任何数字。 无穷大是非零数除以 0 的结果,如下所示:
alert(16 / 0); // 输出: Infinity
alert(-16 / 0); // 输出: -Infinity
alert(16 / -0); // 输出: -Infinity
而 NaN
代表一个特殊的 非数字 值。 它是无效或未定义的数学运算的结果,例如取 -1 的平方根或将 0 除以 0 等。
alert("Some text" / 2); // 输出: NaN
alert("Some text" / 2 + 10); // 输出: NaN
alert(Math.sqrt(-1)); // 输出: NaN
您将在 JavaScript 数值 章节中了解有关数字的更多信息。
布尔数据类型
Boolean 数据类型只能包含两个值:true
或 false
。 它通常用于存储值,例如 yes (true
) 或 no (false
)、on (true
) 或 off (false
) 等,如下所示:
var isReading = true; // yes, I'm reading
var isSleeping = false; // 不,我不睡觉
布尔值也来自程序中的比较结果。 以下示例比较两个变量并在警报对话框中显示结果:
var a = 2, b = 5, c = 10;
alert(b > a) // 输出: true
alert(b > c) // 输出: false
您将在 JavaScript if/else 一章中了解更多关于比较的信息。
未定义的数据类型
未定义的数据类型只能有一个值——特殊值undefined
。 如果一个变量已被声明,但尚未被赋值,则其值为 undefined
。
var a;
var b = "Hello World!"
alert(a) // 输出: undefined
alert(b) // 输出: Hello World!
Null 空数据类型
这是另一种只能有一个值的特殊数据类型 - null
值。 null
值表示没有值。 它不等同于空字符串 (""
) 或 0,它什么都不是。
通过为变量分配 null
值,可以显式清空变量的当前内容。
var a = null;
alert(a); // 输出: null
var b = "Hello World!"
alert(b); // 输出: Hello World!
b = null;
alert(b) // 输出: null
对象数据类型
object
是一种复杂的数据类型,允许您存储数据集合。
对象包含属性,定义为键值对。 属性键(名称)始终是字符串,但值可以是任何数据类型,如字符串、数字、布尔值或复杂数据类型,如数组、函数和其他对象。 您将在接下来的章节中了解有关对象的更多信息。
以下示例将向您展示在 JavaScript 中创建对象的最简单方法。
var emptyObject = {};
var person = {"name": "Clark", "surname": "Kent", "age": "36"};
// 为了更好的阅读
var car = {
"modal": "BMW X3",
"color": "white",
"doors": 5
}
如果名称是有效的 JavaScript 名称,您可以省略属性名称周围的引号。 这意味着 "first-name"
周围需要引号,但 firstname
周围是可选的。 所以上例中的汽车对象也可以写成:
var car = {
modal: "BMW X3",
color: "white",
doors: 5
}
您将在 JavaScript 对象 一章中了解有关对象的更多信息。
数组数据类型
数组是一种用于在单个变量中存储多个值的对象。 数组中的每个值(也称为元素)都有一个数字位置,称为它的索引,它可以包含任何数据类型的数据——数字、字符串、布尔值、函数、对象,甚至其他数组。 数组索引从 0 开始,所以第一个数组元素是 arr[0]
而不是 arr[1]
。
创建数组的最简单方法是将数组元素指定为用方括号括起来的逗号分隔列表,如下例所示:
var colors = ["Red", "Yellow", "Green", "Orange"];
var cities = ["London", "Paris", "New York"];
alert(colors[0]); // 输出: Red
alert(cities[2]); // 输出: New York
您将在 JavaScript 数组 一章中了解有关数组的更多信息。
函数数据类型
该函数是执行代码块的可调用对象。 由于函数是对象,因此可以将它们分配给变量,如下例所示:
var greeting = function(){
return "Hello World!";
}
// 检查问候变量的类型
alert(typeof greeting) // 输出: function
alert(greeting()); // 输出: Hello World!
事实上,函数可以在任何可以使用其他值的地方使用。 函数可以存储在变量、对象和数组中。 函数可以作为参数传递给其他函数,函数可以从函数返回。 考虑以下函数:
function createGreeting(name){
return "Hello, " + name;
}
function displayGreeting(greetingFunction, userName){
return greetingFunction(userName);
}
var result = displayGreeting(createGreeting, "Peter");
alert(result); // 输出: Hello, Peter
您将在 JavaScript 函数 章节中了解有关函数的更多信息。
typeof 运算符
typeof
运算符可用于找出变量或操作数包含的数据类型。 它可以带或不带括号使用(typeof(x)
或 typeof x
)。
typeof
运算符在您需要对不同类型的值进行不同处理的情况下特别有用,但您需要非常小心,因为在某些情况下它可能会产生意想不到的结果,如 以下示例:
// Numbers
typeof 15; // 返回: "number"
typeof 42.7; // 返回: "number"
typeof 2.5e-4; // 返回: "number"
typeof Infinity; // 返回: "number"
typeof NaN; // 返回: "number". 尽管是 "Not-A-Number"
// Strings
typeof ''; // 返回: "string"
typeof 'hello'; // 返回: "string"
typeof '12'; // 返回: "string". 引号内的数字是字符串类型
// Booleans
typeof true; // 返回: "boolean"
typeof false; // 返回: "boolean"
// Undefined
typeof undefined; // 返回: "undefined"
typeof undeclaredVariable; // 返回: "undefined"
// Null
typeof Null; // 返回: "object"
// Objects
typeof {name: "John", age: 18}; // 返回: "object"
// Arrays
typeof [1, 2, 4]; // 返回: "object"
// Functions
typeof function(){}; // 返回: "function"
正如您在上面的示例中可以清楚地看到,当我们使用 typeof
运算符(line no-22)测试 null
值时,它返回" object"而不是"null"。
这是 JavaScript 中的一个长期存在的错误,但由于网络上的许多代码都是围绕这种行为编写的,因此修复它会产生更多问题,因此设计和维护 JavaScript 的委员会拒绝修复这个问题的想法 .