• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2021-07-01 13:04 Aet 隐藏边栏 |   抢沙发  24 
文章评分 9 次,平均分 5.0

对象和原始类型的区别

  1. 原始类型的值
    1. 是原始类型中的一种值。
    2. 在 JavaScript 中有 7 种原始类型:stringnumberbigintbooleansymbolnullundefined
  2. 对象
    1. 能够存储多个值作为属性。
    2. 可以使用大括号 {} 创建对象,例如:{name: "John", age: 30}。JavaScript 中还有其他种类的对象,例如函数就是对象。

当作对象的原始类型

  1. 原始类型仍然是原始的。与预期相同,提供单个值
  2. JavaScript 允许访问字符串,数字,布尔值和 symbol 的方法和属性。
  3. 为了使它们起作用,创建了提供额外功能的特殊“对象包装器”,使用后即被销毁。
  4. “对象包装器”对于每种原始类型都是不同的,它们被称为 StringNumberBooleanSymbol。因此,它们提供了不同的方法。

上述代码中实际发生的情况:

  1. 字符串 str 是一个原始值。因此,在访问其属性时,会创建一个包含字符串字面值的特殊对象,并且具有有用的方法,例如 toUpperCase()
  2. 该方法运行并返回一个新的字符串(由 alert 显示)。
  3. 特殊对象被销毁,只留下原始值 str
  4. JavaScript 引擎高度优化了这个过程。它甚至可能跳过创建额外的对象。但是它仍然必须遵守规范,并且表现得好像它创建了一样。

数字类型

  1. JavaScript 中的常规数字以 64 位的格式 IEEE-754 存储,也被称为“双精度浮点数”。
  2. BigInt 数字,用于表示任意长度的整数。有时会需要它们,因为常规数字不能超过 2^53 或小于 -2^53

toString

  1. 方法 num.toString(base) 返回在给定 base 进制数字系统中 num 的字符串表示形式。

  1. 可以使用两个点在数字上调用方法

舍入

  1. Math.floor
    1. 向下舍入
  2. Math.ceil
    1. 向上舍入
  3. Math.round
    1. 就近整数舍入
  4. Math.trunc
    1. 移除小数点后的所有内容而没有舍入
    2. IE浏览器不支持这个方法
  5. toFixed(n)
    1. 将数字舍入到小数点后 n 位,并以字符串形式返回结果。

不精确的计算

在内部,数字是以 64 位格式 IEEE-754 表示的,所以正好有 64 位可以存储一个数字:其中 52 位被用于存储这些数字,其中 11 位用于存储小数点的位置(对于整数,它们为零),而 1 位用于符号。

但为什么会这样呢?

一个数字以其二进制的形式存储在内存中,一个 1 和 0 的序列。但是在十进制数字系统中看起来很简单的 0.10.2 这样的小数,实际上在二进制形式中是无限循环小数。

换句话说,什么是 0.10.1 就是 1 除以 101/10,即十分之一。在十进制数字系统中,这样的数字表示起来很容易。将其与三分之一进行比较:1/3。三分之一变成了无限循环小数 0.33333(3)

isFinite和isNaN

  • Infinity(和 -Infinity)是一个特殊的数值,比任何数值都大(小)。
  • NaN 代表一个 error。
  • 它们属于 number 类型,但不是“普通”数字
  • isFinite(value) 将其参数转换为数字,如果是常规数字,则返回 true,而不是 NaN/Infinity/-Infinity

parseInt和parseFloat

使用加号 +Number() 的数字转换是严格的。如果一个值不完全是一个数字,就会失败

数学函数

  1. Math.random()
    1. 返回一个从 0 到 1 的随机数(不包括 1)
  2. Math.max(a, b, c...) / Math.min(a, b, c...)
    1. 从任意数量的参数中返回最大/最小值
  3. Math.pow(n, power)
    1. 返回 n 的给定(power)次幂

字符串

  1. 字符串可以包含在单引号、双引号或反引号中

  1. 单引号和双引号基本相同。但是,反引号允许我们通过 \${…} 将任何表达式嵌入到字符串中

  1. 使用反引号的另一个优点是它们允许字符串跨行

  1. 字符串长度

  1. 访问字符

  1. 在 JavaScript 中,字符串不可更改。改变字符是不可能的
  2. 大小写

  1. 查找子字符串

  1. includes,startsWith,endsWith

  1. JavaScript 中有三种获取字符串的方法:substringsubstrslice

  1. 比较字符串

数组

声明

at

pop

push

  1. 可以一次添加多个元素

shift

unshift

  1. 可以一次添加多个元素

性能

  1. push/pop 方法运行的比较快,而 shift/unshift 比较慢

遍历

  1. for .. in遍历数组,会有潜在问题
    1. 会遍历 所有属性,不仅仅是这些数字属性
    2. 循环适用于普通对象,并且做了对应的优化

length

  1. 实际上不是数组里元素的个数,而是最大的数字索引值加一

splice

  1. 删除元素

slice

  1. 将所有从索引 startend(不包括 end)的数组项复制到一个新的数组

concat

  1. 创建一个新数组,其中包含来自于其他数组和其他项的值

forEach

indexOf

  1. indexOf lastIndexOf includes

find

  1. find findIndex findLastIndex

filter

map

  1. 对数组的每个元素都调用函数,并返回结果数组

sort

  1. 默认情况下按字符串排序

reverse

split join

isArray

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2025-04-04
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享