学习前端第二十六天(对象 —— 原始值转换、原始类型的方法、数字类型)

一、对象 ------ 原始值转换

目的:对象是如何转换为原始值的,以及如何对其进行自定义

obj[Symbol.toPrimitive] = function``(``hint``)

{ // 这里是将此对象转换为原始值的代码

// 它必须返回一个原始值

// hint = "string"、"number" 或 "default" 中的一个 }

二、原始类型的方法

原始类型中的方法可以直接用.xxxx调用,达到某种效果,如:

let str = "Hello"``;

alert``( str.``toUpperCase``(``) )``; // HELLO

  1. 字符串 str 是一个原始值。因此,在访问其属性时,会创建一个包含字符串字面值的特殊对象,并且具有可用的方法,例如 toUpperCase()
  2. 该方法运行并返回一个新的字符串(由 alert 显示)。
  3. 特殊对象被销毁,只留下原始值 str

null/undefined 没有任何方法

三、数字类型

1、编写数字的方法

1e6 = 1 * 10 的6次方

12e-5 = 12 * 10的-5次方

2、前缀 : 0x/0X 16进制 、 0o/0O 八进制 、 0b/0B 二进制

前缀加数字得到该数字十进制下的结果

0x10 = 16

0o10 = 8

3、toString

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

num = 255;

num.toString(2); // 二进制下的'255' = 11111111

n.toString(8); // 八进制下的'255' = 377

n.toString(16); // 十六进制的'255' = ff

4、舍入

Math.floor

向下舍入:3.1 变成 3-1.1 变成 -2

Math.ceil

向上舍入:3.1 变成 4-1.1 变成 -1

Math.round

向最近的整数舍入:3.1 变成 33.6 变成 4,中间值 3.5 变成 4

5、将数字舍入到小数点后 n 位的方法

1、乘除法

例如,要将数字舍入到小数点后两位,我们可以将数字乘以 100,调用舍入函数,然后再将其 除回。

let num = 1.23456``;

alert``( Math.``round``(num * 100``) / 100 )``;

2、函数 toFixed(n) 将数字舍入到小数点后 n 位,并以字符串形式返回结果。

使用一元加号调用,将其转换为数字,例如 + num.toFixed(5)

6、不精确的计算

为什么0.1+0.2 === 0.3 返回 false?

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

在二进制数字系统中,可以保证以 2 的整数次幂作为除数时能够正常工作,但 1/10 就变成了一个无限循环的二进制小数。

解决这个问题最可靠的方法是借助方法 toFixed(n) 对结果进行舍入

let sum = 0.1 + 0.2``;

alert``( sum.``toFixed``(``2``) )``;

乘/除法可以减少误差,但不能完全消除误差

7、isFinite和isNaN

isNaN(value) 将其参数转换为数字,然后测试它是否为 NaN

isFinite(value) 将其参数转换为数字,如果是常规数字而不是 NaN/Infinity/-Infinity,则返回 true,有时 isFinite 被用于验证字符串值是否为常规数字

8、parseInt和parseFloat

它们可以从字符串中"读取"数字,直到无法读取为止。如果发生 error,则返回收集到的数字。函数 parseInt 返回一个整数,而 parseFloat 返回一个浮点数。

alert``( parseInt``(``'100px'``) )``; // 100

alert``( parseFloat``(``'12.5em'``) )``; // 12.5

alert``( parseInt``(``'12.3'``) )``; // 12,只有整数部分被返回了

alert``( parseFloat``(``'12.3.4'``) )``; // 12.3

某些情况下,parseInt/parseFloat 会返回 NaN。当没有数字可读时会发生这种情况

9、一些数字类型方法

Math.random()

返回一个从 0 到 1 的随机数(不包括 1)。

Math.max(a, b, c...)Math.min(a, b, c...)

从任意数量的参数中返回最大值和最小值。

Math.pow(n, power)

返回 n 的给定(power)次幂。

相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms4 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下4 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。4 天前
2026.2.25监控学习
学习
im_AMBER4 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J4 天前
从“Hello World“ 开始 C++
c语言·c++·学习