带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型③

简介: 带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型③

写在前头

大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。


注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。


思维导图

微信截图_20221111182904.png


脉络

这小节就是介绍了3.4数据类型中的3.4.5Number类型的5. 数值转换。


3.4数据类型

微信截图_20221111182914.png


3.4.5Number类型

微信截图_20221111182924.png


5. 数值转换

微信截图_20221114164051.png


一、用于任何数据类型

Number()函数。这个函数可以将任何数据类型转换为数值。


规则(6个)

  1. 原始类型
  • undefined,null

undefined -> NaN,null-> 0

  • Boolean

true -> 1, false-> 0

  • 数值


数值(n进制)->数值(十进制)

<script>
        const result1 = 0x12; // 十六进制
        console.log(result1); // 18
        console.log(Number(result1)); // 18
          const result2 = 012; // 八进制 0o12也ok
        console.log(result2); // 10
        console.log(Number(result2)); // 10
</script>
复制代码


  • 符号类型

书中原话:符号类型不能转换为数值


  • 字符串

总结: 空变0,前面0去掉,进制均变十,符号正可以去,负得留。其他一律NaN


①空字符串包含数值字符

②包含数值字符

③包含有效的浮点值格式

④包含有效的十六进制格式

⑤其他字符


  1. 对象
  • 返回原始类型的值


valueOf()方法,每个对象都自带这个方法,当使用这个方法返回的是原始值,转换规则和上面6个一样。


补充

valueOf()方法:

①JavaScript 自动调用

②可以继承


valueOf() 默认应用以下规则

①调用对象为 Date 的实例 (详情看第五章的Date对象)

②调用对象为原始值包装类型的实例 (详情看第五章的原始值包装类型)

有Number,Boolean,String引用类型

③调用对象为其他对象

  • 返回对象


调用对象自身的 toString()方法

①如果返回原始类型的值,则直接对该值使用上述规则

②数组的 valueOf() 方法返回对象本身

默认返回每个元素的toString() 结果并以逗号连接的字符串(第六章6.2.7会详细写到数组的toString(),valueOf()方法的使用)。

console.log(Number([1, 2])); // valueOf()返回[1,2] toString()返回1,2 最后使用字符串规则又返回NaN
复制代码


③对象的 valueOf() 方法返回对象本身

返回字符串 '[ObjectObject]',之后再应用字符串的转换规则

④toString()方法返回的是对象,则报错


二、字符串转换为数值


parseInt()

  • 目的是为了得到整数(优先使用)
  • 与Number()函数的区别


Number()函数转换字符串时相对复杂且有点反常规(原话)

  • 规则


①前面空格会被忽略

parseInt()从第一个非空字符开始转换。


②第一个字符是数值字符、加号或减号

一直转换直到遇到非数值字符否则会一直转换到字符串末尾。

不同的整数格式

十进制,八进制,十六进制均可以识别。


复习: 严格模式八进制必须0o前缀

第二个参数

作用:表示第一个参数是什么进制的,有了第二个参数告知进制是几的前提下,可以将第一个参数的0x(十六进制),0o(八进制)去掉。


③第一个字符不是数值字符、加号或减号

立刻返回NaN,停止转换。


parseFloat()

  • 目的是为了得到浮点数
  • 与parseInt()相似之处


①前面空格会被忽略

  • 与parseInt()不同之处


①第一次出现的小数点是有效的

②它始终忽略字符串开头的零。这个函数能识别前面讨论的所 有浮点格式,以及十进制格式(开头的零始终被忽略)。

③只解析十进制值,十六进制数值始终会返回 0。



目录
相关文章
|
5月前
|
JavaScript 前端开发 开发工具
TypeScript的介绍,let age:number = xxx,可以直接看出数据类型,Type由微软开发,可以在任何浏览器和系统中运行,比较适合大型项目,TypeScript的安装
TypeScript的介绍,let age:number = xxx,可以直接看出数据类型,Type由微软开发,可以在任何浏览器和系统中运行,比较适合大型项目,TypeScript的安装
|
2月前
|
存储 Java Apache
Python Number类型详解!
本文详细介绍了 Python 中的数字类型,包括整数(int)、浮点数(float)和复数(complex),并通过示例展示了各种算术操作及其类型转换方法。Python 的 `int` 类型支持任意大小的整数,`float` 类型用于表示实数,而 `complex` 类型用于表示复数。此外,文章还对比了 Python 和 Java 在数字类型处理上的区别,如整数类型、浮点数类型、复数类型及高精度类型,并介绍了各自类型转换的方法。尽管两种语言在语法上有所差异,但其底层逻辑是相通的。通过本文,读者可以更好地理解 Python 的数字类型及其应用场景。
63 2
|
4月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型Number
这篇文章是关于Python接口自动化测试中常用数据类型Number的基础介绍,涵盖了int、float、bool类型以及数学函数和常量的使用,强调了这些数据类型在自动化测试框架中的广泛应用。
31 0
Python接口自动化测试框架(基础篇)-- 常用数据类型Number
TS定义布尔值,let flag:boolean = true,定义数字类型 let a1:number = 10,赋值 let str1:string = ‘‘,打印c~.log($(str1))
TS定义布尔值,let flag:boolean = true,定义数字类型 let a1:number = 10,赋值 let str1:string = ‘‘,打印c~.log($(str1))
TS,数据类型概述,常见的基本数据类型有number/string/boolean/undefined/null,字符串用““,let food: string = ‘糖葫芦‘,布尔类型
TS,数据类型概述,常见的基本数据类型有number/string/boolean/undefined/null,字符串用““,let food: string = ‘糖葫芦‘,布尔类型
TS,类型注解 number就是类型注解,TS类型注解是一种为变量添加类型约束的方式,你定义什么类型,就只能赋值什么类型,变量命名规则,变量名称不能以数字开头,交换变量写法
TS,类型注解 number就是类型注解,TS类型注解是一种为变量添加类型约束的方式,你定义什么类型,就只能赋值什么类型,变量命名规则,变量名称不能以数字开头,交换变量写法
|
算法
Leetcode 313. Super Ugly Number
题目翻译成中文是『超级丑数』,啥叫丑数?丑数就是素因子只有2,3,5的数,7 14 21不是丑数,因为他们都有7这个素数。 这里的超级丑数只是对丑数的一个扩展,超级丑数的素因子不再仅限于2 3 5,而是由题目给定一个素数数组。与朴素丑数算法相比,只是将素因子变了而已,解法还是和朴素丑数一致的。
104 1
|
6月前
|
存储 SQL 算法
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode 题目 65:有效数字(Valid Number)【python】
|
7月前
|
存储 算法
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
53 0
|
存储
Leetcode Single Number II (面试题推荐)
给你一个整数数组,每个元素出现了三次,但只有一个元素出现了一次,让你找出这个数,要求线性的时间复杂度,不使用额外空间。
42 0