2

Javascript 数据类型 | myfreax

 1 year ago
source link: https://www.myfreax.com/javascript-data-types/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

JavaScript 数据类型

JavaScript原始数据类型包括有object,null,undefined,boolean,number,string

JavaScript 数据类型

Javascript 数据类型

JavaScript 原始数据类型包括 objectnullundefinedbooleannumberstring

symbol 从 ES2015 开始可用,bigint 从 ES2020 开始可用。其中 object 是一个复杂的数据类型。

JavaScript-data-types.webp

JavaScript-data-types

JavaScript 是一种动态类型语言。这意味着变量不与类型相关联。换句话说,变量可以保存任何类型的值。

例如在下面的 type.js 文件中,counter 变量初始化的值是 120,之后被赋值为布尔值 false ,然后又被赋值为字符串 foo

let counter = 120; // counter is a number
counter = false;   // counter is now a boolean
counter = "foo";   // counter is now a string

type.js

如果你需要知道当前变量存储的值类型,可以使用 JavaScript 的 typeof 运算符,获得变量的数据类型。

let counter = 120;
console.log(typeof(counter)); // "number"

counter = false; 
console.log(typeof(counter)); // "boolean"

counter = "Hi";
console.log(typeof(counter)); // "string"

undefined 未定义

undefined 类型是只有一个原始类型的值 undefined。默认情况下,当一个变量被声明但未初始化时,变量被赋值为 undefined

在下面的示例中,我们在第一行声明一个变量 counter。由于 counter 尚未初始化,因此为其分配的值是 undefinedcounter 的类型也是 undefined

值得注意的是,当您使用尚未声明的变量时,typeof 运算符也会返回 undefined

let counter;
console.log(counter);        // undefined
console.log(typeof counter); // undefined

null 空类型

null 类型是第二种原始数据类型,也只有一个值 null

当你在浏览器的控制台运行代码 typeof null 时,代码将会返回一个对象。这是一个在 Javascript 的 Bug。

虽然有人曾经提出过修复此错误,但被拒绝。原因是修复此 Bug 会破坏许多现有Web 网站。

在 JavaScript 数据类型 null 是等于 undefined 的,但不是全等 ===,因为在 Javascript 的 null 值是等于布尔值 falseundefined 也是如此。

let obj = null;
console.log(typeof obj); // object
console.log(null == undefined); // true

number 数值类型

JavaScript 使用 number 类型来表示整数和浮点数。下面的语句声明一个变量并用一个整数初始化它的值。

let num = 100;

要表示浮点数,请包含一个小数点,后跟至少一个数字。

let price= 12.5; 
let discount = 0.05;

如果数字看起来是整数,例如代码 let price = 200.00;,JavaScript 会自动将浮点数转换为整数。

原因是 JavaScript 总是希望使用更少的内存,因为浮点值使用的内存是整数值的两倍。

如果要获取数值类型的范围,可以打开浏览器控制台运行代码 Number.MIN_VALUE 获取最小值和运行代码 Number.MAX_VALUE 获取最大值。

console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
console.log(Number.MIN_VALUE); // 5e-324

此外,您可以使用 Infinity 和 -Infinity 来表示无限数。

console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity
console.log(-Number.MAX_VALUE - Number.MAX_VALUE); // -Infinity

NaN 非数值类型

NaN 代表非数值。它是一个特殊的数值,表示一个无效的数字。当强制转换字符串为数值时,它会返回 NaN

NaN 有两个特点。第一特点是所有与 NaN 的运算都会返回 NaN ,例如代码console.log(NaN/2);

第二个特点是 NaN 不等于任何值,包括它自己本身,例如代码 console.log(NaN == NaN);

console.log('a'/2); // NaN;
console.log(NaN/2); // NaN
console.log(NaN == NaN); // false

string 字符串类型

在 JavaScript,字符串是零个或多个字符的序列。字符串字面量以单引号 ' 或双引号 " 开始和结束。

以双引号开头的字符串必须以双引号结尾。同样,以单引号开头的字符串也必须以单引号结尾。

如果要在字符串中使用单引号或双引号,则需要使用反斜杠对其进行转义。例如代码。

let message = 'I\'m also a valid string';

JavaScript 字符串是不可变的。这意味着它一旦创建就无法修改。但是,您可以从现有字符串创建新字符串。

在 string.js 例子中首先初始化变量 str 的值是'JavaScript' 。然后使用加号运算符连接 'JavaScript'' String'

最后重新赋值给变量 str ,此时变量 str 值是 'Javascript String'

在幕后,JavaScript 引擎创建一个新字符串来保存 'JavaScript String' 并销毁原始字符串 'JavaScript''String'

let str = 'JavaScript';
str = str + ' String';

string.js

boolean 布尔类型

boolean 类型有两个字面值,分别是 truefalse。下面的示例声明了两个保存布尔值的变量。

JavaScript 允许将其他类型的值转换为布尔值的 truefalse。要将另一种数据类型的值转换为布尔值,请使用 Boolean() 函数。

let inProgress = true;
let completed = false;

console.log(typeof completed); // boolean

要将另一种数据类型的值转换为布尔值,可以使用 Boolean() 函数。下表显示了转换规则:

类型 true false
string 非空字符串 空字符串
number 非 0 数值和 Infinity 0, NaN
object non-null object null
undefined   undefined

symbol 符号类型

JavaScript 在 ES6 添加了原始类型 symbol 符号 。与其他原始类型不同,symbol 类型没有字面量的形式。

要创建符号,请调用 Symbol 函数,每次调用 Symbol 函数都会创建一个新的唯一值。您可以在 Symbol 教程中了解更多关于 Symbol 信息。

symbol 值可以作为对象属性的标识符,通常使用它来创建对象的私有属性和方法,这是 Symbol 数据类型存在的目的。

let s1 = Symbol();
console.log(Symbol() == Symbol()); // false

bigint 类型

BigInt 是一种内置对象,它提供了一种方法用于表示大于 253–1 的整数。这原本是 JavaScript 中可以用 Number 表示的最大数字。BigInt可以表示任意大的整数。

要创建 bigint 数字可以在一个整数的后面加追加字母 n ,例如 10n,或者调用  BigInt() 函数并传递一个整数值或者是字符串的数字。

如果传递的是字符串的数字, BigInt() 将会强制转换字符串类型为数值。您将在此处了解 bigint 类型的更多信息。

let pageView = 9007199254740991n;
console.log(typeof(pageView)); // 'bigint'

object 对象类型

在 JavaScript,对象是属性的集合,每个属性都定义为键值对。对象的属性名称可以是任何字符串或者符号 symbol 的值。

代码 let emptyObject = {}; 使用对象字面量语法定义了一个空对象。

let emptyObject = {};

代码 let person = { firstName: 'John', lastName: 'Doe'}; 定义具有两个属性的 person 对象:firstName 和 lastName。

let person = { firstName: 'John', lastName: 'Doe'};

如果属性名称不是有效标识符,您可以在属性名称周围使用单引号或者双引号。例如,如果对象的属性名称是 full-name,则必须单双引号包裹 "first-name"

对象的属性不仅可以保存简单值,也可以保存复杂的数据类型对象。

let contact = {
    firstName: 'web',
    lastName: 'myfreax',
    'full-name':'web@myfreax'
    email: '[email protected]',
    phone: '408555-9999',
    address: {
        building: '4000',
        street: 'North 1st street',
        city: 'San Jose',
        state: 'CA',
        country: 'USA'
    }
}

要访问对象的属性,您可以使用点符号 . 或者类似数组的符号 []。当要访问属性嵌套的对象时,也可以继续使用点符号 . 访问嵌套的属性。

如果你访问一个不存在的属性,你会得到一个未定义的值。

console.log(contact.firstName);
console.log(contact.lastName);
console.log(contact.age); // undefined
console.log(contact['phone']); // '(408)-555-9999'
console.log(contact['email']); // 'web@myfreax'
console.log(contact['address']['building']); // '4000'
console.log(contact.address.building); // '4000'

JavaScript 的原始数据类型是 numberstringbooleannullundefinedsymbol以及 bigint 和复杂类型对象 object

微信公众号

支付宝打赏

myfreax 淘宝打赏

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK