JavaScript

JavaScript 知识量:26 - 101 - 483

4.3 原始值包装类型><

什么是包装类型- 4.3.1 -

包装类型是一种对象类型,它们与原始类型相对应。比如,Number、String、Boolean、Symbol 都是包装类型。这些包装类型可以用来操作原始值,但它们并非原始值本身。例如,可以通过调用 Number.parseFloat('3.14') 来获取一个 Number 类型的对象,它包装了原始值 3.14。

JavaScript 自动在需要的时候将原始值转化为包装类型,这个过程被称为“自动包装”,同时也会自动将包装类型转化为原始值,这个过程被称为“自动拆包”。例如:

let num = 123; // 这是一个原始值  
console.log(typeof num); // 输出 "number",因为 num 是一个原始值  
  
num = num.toString(); // 现在 num 是一个 String 包装类型  
console.log(typeof num); // 输出 "string",因为 num 是一个 String 包装类型  
  
num = Number(num); // 现在 num 是一个 Number 包装类型  
console.log(typeof num); // 输出 "object",因为 num 是一个 Number 包装类型

Boolean- 4.3.2 -

JavaScript中的Boolean是一种数据类型,它用于表示真或假两种可能的状态。布尔值是布尔类型的唯一成员,它们是特殊的因为它们只能是真或假。

在JavaScript中,Boolean对象是通过将其他数据类型转换为布尔类型而得到的。以下是一些关于Boolean对象的关键点:

  • 自动转换:在JavaScript中,当操作需要布尔值时,许多类型都会自动转换为布尔值。例如,在条件语句(如if语句)中,非空字符串、非零数字、非空对象和“truthy”值(例如 true、{}、[]、1、非空字符串等)都会被视为true。而空字符串、0、null、undefined和“falsy”值(例如 false、null、undefined、空字符串等)会被视为false。

  • 隐式转换:在许多情况下,当布尔值与其他类型进行运算时,布尔值会被隐式地转换为其他类型。例如,当布尔值与字符串连接时,布尔值会被转换为字符串。例如,true + "test" 会返回 "true",而 false + "test" 会返回 "false"。

  • Boolean构造函数:虽然通常不需要使用Boolean构造函数(因为布尔值已经是布尔类型的实例),但仍然可以使用它来创建一个新的Boolean对象。然而,创建新的Boolean对象并不常见,因为布尔值在JavaScript中是原始类型,通常直接使用true或false。

  • Boolean方法:JavaScript的Boolean对象具有一些方法,如toString()、valueOf()等。这些方法允许获取或转换Boolean对象的值。例如,!(!num) 会对num进行布尔转换,如果num为0或null等falsy值,则返回true,否则返回false。

以下是Boolean类型的常见属性和方法:

1. 属性:

  • length:返回0,因为Boolean类型没有length属性。

  • constructor:返回创建此对象的函数。

  • prototype:返回 Boolean 对象原型。

2. 方法:

  • toString():返回字符串 "true" 或 "false"。

  • valueOf():返回原始的布尔值。

这些属性和方法提供了对Boolean类型值的基本操作和交互。

Number- 4.3.3 -

以下是JavaScript Number的一些属性和方法:

1. 属性

  • Number.MAX_VALUE:代表能表示的最大数值,约等于1.8e+308。

  • Number.MIN_VALUE:代表能表示的最小数值,约等于5e-324。

  • Number.NaN:非数字值,表示计算结果未定义或不可表示。

  • Number.POSITIVE_INFINITY:代表正无穷大,当数值超过Number.MAX_VALUE时,将返回该值。

  • Number.NEGATIVE_INFINITY:代表负无穷大,当数值低于Number.MIN_VALUE时,将返回该值。

2. 方法

  • Number.parseFloat(string):解析字符串参数,并返回一个浮点数。如果字符串不能被解析为数字,则返回 NaN。

  • Number.parseInt(string, radix):解析字符串参数,并返回一个整数。radix参数定义了数的基数,必须在2和36之间(包括2和36)。如果radix是0或者省略,那么基数将从字符串的前缀确定:如果字符串以"0x"或"0X"开始,基数为16;如果字符串以"0"开始,基数为8;否则,基数为10。如果字符串不能被解析为数字,则返回 NaN。

  • Number.isInteger(num):检查num是否是整数。如果num是整数,返回true;否则返回false。

  • Number.isNaN(num):检查num是否是NaN。如果num是NaN,返回true;否则返回false。与global.isNaN()不同,Number.isNaN()不会在非数值上抛出类型错误。

注意:JavaScript的Number类型可以表示的整数范围大约为-9007199254740991至9007199254740991,浮点数的精度大约为15位有效数字。超出这个范围的数可能会引发精度问题。

下面是一个应用示例:

let num = 123;  
console.log(Number.isInteger(num)); // 输出true  
console.log(Number.isFinite(num)); // 输出true  
  
let notNum = 'hello';  
console.log(Number.isInteger(notNum)); // 输出false  
console.log(Number.isFinite(notNum)); // 输出false

String- 4.3.4 -

JavaScript的String类型有很多属性和方法,以下是一些常见的:

1. 属性:

  • length:返回字符串中的字符数。

  • constructor:返回创建此对象的函数。

  • prototype:返回 String 对象原型。

2. 方法:

  • charAt(index):返回指定位置的字符。

  • concat(string2, string3, ..., stringX):连接两个或多个字符串,并返回新的字符串。

  • indexOf(searchValue[, fromIndex]):返回指定文本首次出现的索引,如果没有找到则返回-1。

  • lastIndexOf(searchValue[, fromIndex]):返回指定文本最后一次出现的索引,如果没有找到则返回-1。

  • replace(regexp|substr, newSubStr|function):在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

  • slice(startIndex, endIndex):提取字符串的片段,并在新的字符串中返回被提取的部分。

  • split(separator[, limit]):把字符串分割为字符串数组。

  • substring(indexStart[, indexEnd]):提取字符串中两个指定的索引号之间的字符。

  • toLowerCase() 和 toUpperCase():将字符串转换为小写或大写。

  • trim():移除字符串两端的空白符。

  • trimLeft() 和 trimRight():移除字符串两端指定的字符。

以下是一个字符串查找的示例:

String str = "Hello World";  
int index = str.indexOf("World");  
System.out.println(index);  // 输出:6