### JavaScript基础练习_day2知识点详解
#### 一、概述
本篇练习主要针对JavaScript初学者设计,涵盖了变量声明、数据类型、算术运算、字符串处理以及数组操作等基础概念。通过具体的代码示例来帮助读者理解和掌握这些核心知识点。
#### 二、变量声明与数据类型
1. **变量声明**:
- 在JavaScript中,`var` 是用于声明变量的关键字之一。随着ES6的引入,推荐使用 `let` 和 `const` 进行变量声明。
- 示例中的 `varexerOne='test;` 存在语法错误,正确的写法应该是 `var exerOne = 'test';`。此错误提示 `Uncaught SyntaxError: Invalid or unexpected token` 表明在字符串中缺少了一个闭合引号。
2. **数据类型**:
- JavaScript是一种动态类型语言,常见的数据类型包括:数字(Number)、字符串(String)、布尔(Boolean)、null、undefined、对象(Object)等。
- 示例中:
- `exerTwo` 的值是无穷大(`Infinity`),因为任何非零数值除以0的结果都是Infinity。
- `exerThree` 的值是NaN(Not a Number),因为0除以0的结果是不确定的,因此被定义为NaN。
- `typeof` 操作符用于查询变量的数据类型,可以看到即使是Infinity或NaN,它们的数据类型也是Number。
#### 三、数值转换与解析
1. **数值转换**:
- 使用 `Number()` 可以将其他类型的值转换为数字,但如果转换失败则返回NaN。
- `parseFloat()` 和 `parseInt()` 用于解析字符串中的数字,其中 `parseFloat()` 解析浮点数,`parseInt()` 解析整数。
- 示例中的 `Number("-3.3E+2-5")` 返回NaN是因为字符串中含有非法字符 `-5`,而 `parseFloat("-3.3E+2-5")` 则成功解析出 `-330`。
2. **区别**:
- `Number()` 是整体转换,即尝试将整个字符串转换为数字。
- `parseFloat()` 和 `parseInt()` 是从左到右部分转换,即遇到第一个无法解析的字符时停止并返回已解析的部分。
#### 四、字符串操作
1. **字符串拼接与访问**:
- 字符串可以通过加号 (`+`) 进行拼接。
- 示例中的 `console.log(exerFive_1 + exerFive_2)` 将数值与字符串进行拼接,得到结果 `2.5isfloat?`。
- 双引号和单引号都可以用来定义字符串,双引号内可以包含单引号,反之亦然。示例中的 `"thisis\"teststring"` 中的 `\` 是转义字符,用于表示特殊字符如双引号。
2. **字符串切片**:
- `slice()` 方法用于从字符串中提取一个子串,不修改原字符串。
- 示例中的 `console.log(exerSeven.slice(5, 9))` 从索引5开始(包括),到索引9结束(不包括),得到子串 "is"。
#### 五、算术运算与浮点数问题
1. **浮点数运算**:
- 浮点数在计算机内部是以近似值存储的,因此像 `0.1 + 0.2 != 0.3` 这样的情况很常见。
- 为了避免浮点数运算带来的精度问题,可以将浮点数乘以适当的倍数转化为整数再进行运算,或者使用 `toFixed()` 方法对结果进行四舍五入。
2. **解决方法**:
- 示例中提供的两种解决方案:
- `(0.1 + 0.2).toFixed(1) == '0.3'`,使用 `toFixed()` 方法对结果进行四舍五入。
- `(0.1 * 10 + 0.2 * 10) / 10 == 0.3`,先将浮点数乘以10再进行运算,最后除以10得到精确结果。
#### 六、数组操作
1. **数组操作方法**:
- JavaScript数组提供了多种方法来进行操作,不同的方法对原数组的影响也不同。
- 示例中给出了一些不会改变原数组的方法,它们是返回新数组的操作:
- D、`slice()`:返回指定位置的元素副本组成的数组。
- E、`concat()`:连接两个或多个数组,并返回新的数组。
- H、`map()`:创建一个新数组,其结果是调用一个提供给数组每个元素的函数。
- I、`reduce()`:对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
- J、`copyWithin()`:浅拷贝数组的一部分到数组的另一个位置,并返回数组本身。
2. **总结**:
- 了解这些方法对于编写高效且易于维护的代码至关重要。例如,在需要保留原始数组不变的情况下使用 `slice()` 或 `concat()`;而在需要对数组元素进行转换或汇总时使用 `map()` 或 `reduce()`。
通过以上知识点的讲解,相信初学者能够更好地理解JavaScript的基本概念,并在实际开发中应用这些基础知识。随着实践的深入,这些基本概念将会成为构建更复杂应用程序的坚实基石。