飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • AngularJS教程
  • UEditor使用文档
  • ThinkPHP5.0教程

JavaScript数据类型

时间:2021-11-24  作者:匿名  

数据类型

JavaScript 中的值始终是特定类型的。例如,字符串或数字。

JavaScript 中有八种基本数据类型。在这里,我们将概括介绍它们,在接下来的章节中,我们将详细讨论它们中的每一个。

我们可以将任何类型放入变量中。例如,一个变量有时可以是一个字符串,然后存储一个数字:

// no error
let message = "hello";
message = 123456;

允许这种情况的编程语言,例如 JavaScript,被称为“动态类型”,这意味着存在数据类型,但变量不绑定到任何一种。

JavaScript 中的 8 种基本数据类型。

number对于任何类型的数字:整数或浮点数,整数受.±(253-1)

bigint 用于任意长度的整数。

string对于字符串。一个字符串可能有零个或多个字符,没有单独的单字符类型。

boolean为true/ false。

null对于未知值 - 具有单个值的独立类型null。

undefined对于未分配的值——具有单个值的独立类型undefined。

object 用于更复杂的数据结构。

symbol 用于唯一标识符。

该typeof运算符允许我们查看存储在变量中的类型。

两种形式:typeof x或typeof(x)。

返回带有类型名称的字符串,例如"string"。

对于null返回"object"——这是语言中的一个错误,它实际上不是一个对象。

数字

let n = 123;
n = 12.345;

的数式表示整数和浮点数。

有许多数字运算,例如乘法*、除法/、加法+、减法-等。

除了常规数字外,还有所谓的“特殊数值”也属于这种数据类型:Infinity、-Infinity和NaN。

Infinity表示数学无穷大∞。它是一个比任何数字都大的特殊值。

我们可以通过除以零得到它:

 alert( 1 / 0 ); // Infinity

或者直接引用它:

 alert( Infinity ); // Infinity

NaN表示计算错误。它是不正确或未定义的数学运算的结果,例如:

 alert( "not a number" / 2 ); // NaN, such division is erroneous

NaN很粘。对NaN返回的任何进一步操作NaN:

 alert( "not a number" / 2 + 5 ); // NaN

所以,如果NaN数学表达式中有某个地方,它会传播到整个结果。

数学运算是安全的

在 JavaScript 中做数学是“安全的”。我们可以做任何事情:除以零,将非数字字符串视为数字等。

脚本永远不会因致命错误(“死”)而停止。在最坏的情况下,我们会得到NaN结果。

特殊数值在形式上属于“数字”类型。当然,它们不是这个词的常识中的数字。

我们将在Numbers一章中看到更多关于处理数字的内容。

长整型

在 JavaScript 中,“数字”类型不能表示大于(即)或小于负数的整数值。这是由它们的内部表示引起的技术限制。(253-1)9007199254740991-(253-1)

对于大多数目的,这已经足够了,但有时我们需要非常大的数字,例如用于密码学或微秒精度的时间戳。

BigInt type 最近被添加到语言中来表示任意长度的整数。

BigInt通过附加n到整数的末尾来创建一个值:

// the "n" at the end means it's a BigInt
const bigInt = 1234567890123456789012345678901234567890n;

由于BigInt很少需要数字,因此我们不在这里介绍它们,而是将它们放在单独的一章BigInt 中。当您需要如此大的数字时,请阅读它。

兼容性问题

目前,BigIntFirefox/Chrome/Edge/Safari 支持,但 IE 不支持。

您可以查看MDN BigInt 兼容性表以了解支持哪些浏览器版本。

字符串

JavaScript 中的字符串必须用引号括起来。

let str = "Hello";
let str2 = 'Single quotes are ok too';
let phrase = `can embed another ${str}`;

在 JavaScript 中,有 3 种类型的引号。

双引号:"Hello".

单引号:'Hello'.

反引号:`Hello`。

双引号和单引号是“简单”引号。它们在 JavaScript 中几乎没有区别。

反引号是“扩展功能”引号。它们允许我们通过将它们包装在 中来将变量和表达式嵌入到字符串中${…},例如:

 let name = "John";
// embed a variable
alert( `Hello, ${name}!` ); // Hello, John!
// embed an expression
alert( `the result is ${1 + 2}` ); // the result is 3

内部的表达式${…}被计算,结果成为字符串的一部分。我们可以在里面放任何东西:一个变量,name或者一个算术表达式,1 + 2或者更复杂的东西。

请注意,这只能在反引号中完成。其他报价没有这个嵌入功能!

 alert( "the result is ${1 + 2}" ); // the result is ${1 + 2} (double quotes do nothing)

我们将在字符串一章中更彻底地介绍字符串。

没有字符类型。

在某些语言中,单个字符有一种特殊的“字符”类型。例如,在 C 语言和 Java 中,它被称为“char”。

在 JavaScript 中,没有这样的类型。只有一种类型:string. 一个字符串可以由零个字符(为空)、一个或多个字符组成。

布尔(逻辑类型)

boolean 类型只有两个值:true和false。

这种类型通常用于存储是/否值:true表示“是,正确”,false表示“否,不正确”。

例如:

let nameFieldChecked = true; // yes, name field is checked
let ageFieldChecked = false; // no, age field is not checked

布尔值也是比较的结果:

 let isGreater = 4 > 1;
alert( isGreater ); // true (the comparison result is "yes")

我们将在逻辑运算符一章中更深入地介绍布尔值。

“空”值

特殊null值不属于上述任何类型。

它形成了一个单独的类型,它只包含null值:

let age = null;

在 JavaScript 中,null它不像其他语言那样是“对不存在对象的引用”或“空指针”。

它只是一个特殊的值,代表“无”、“空”或“值未知”。

上面的代码表明这age是未知的。

“未定义”值

特殊价值undefined也与众不同。它创造了一种自己的类型,就像null.

意思undefined是“没有赋值”。

如果变量已声明但未赋值,则其值为undefined:

 let age;
alert(age); // shows "undefined"

从技术上讲,可以显式分配undefined给变量:

 let age = 100;
// change the value to undefined
age = undefined;
alert(age); // "undefined"

但我们不建议这样做。通常,人们习惯于null将“空”或“未知”值分配给变量,而undefined保留为未分配事物的默认初始值。

对象和符号

该object类型是特殊的。

所有其他类型都被称为“原始类型”,因为它们的值只能包含一个东西(可以是字符串或数字或其他任何东西)。相比之下,对象用于存储数据和更复杂实体的集合。

由于如此重要​​,对象应该得到特殊对待。在我们了解更多关于原语之后,我们将在后面的对象章节中处理它们。

该symbol类型用于为对象创建唯一标识符。为了完整起见,我们不得不在这里提及它,但也将细节推迟到我们知道对象。

操作符类型

该typeof运算符返回参数的类型。当我们想以不同的方式处理不同类型的值或只想做一个快速检查时,它很有用。

它支持两种形式的语法:

作为运营商:typeof x.

作为一个函数:typeof(x).

换句话说,它可以使用括号或不使用括号。结果是一样的。

调用typeof x返回一个带有类型名称的字符串:

typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object"  (1)
typeof null // "object"  (2)
typeof alert // "function"  (3)

最后三行可能需要额外解释:

Math是一个提供数学运算的内置对象。我们将在Numbers一章中学习。在这里,它只是作为一个对象的例子。

的结果typeof null是"object"。这是一个官方认可的typeof行为错误,来自 JavaScript 的早期并保持兼容性。绝对null不是一个对象。它是一个特殊值,具有自己的单独类型。

的结果typeof alert是"function",因为alert是一个函数。我们将在接下来的章节中学习函数,我们还将看到 JavaScript 中没有特殊的“函数”类型。函数属于对象类型。但typeof以不同的方式对待它们,返回"function". 这也来自 JavaScript 的早期。从技术上讲,这种行为是不正确的,但在实践中可能很方便。

搜你所爱
JavaScript:目录
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。