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

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

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

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)次幂。

相关推荐
今天我又学废了16 分钟前
Scala学习记录,List
学习
王俊山IT40 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
南宫生2 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
武子康3 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
使者大牙3 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
As977_4 小时前
前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)
前端·css·学习
ajsbxi4 小时前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
Rattenking4 小时前
React 源码学习01 ---- React.Children.map 的实现与应用
javascript·学习·react.js
dsywws4 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习