[TOC]

✊总有人要成为第一,为什么不是你。

2021年07月28日

工作重点

1 工作重点事项 进度 已完成
2 上午将JavaScript的基本数据类型和复杂数据类型的存储方式 已完成
- [x]

| | 3 | 下午讲JavaScript的基本数据类型转化 | 已完成 |
- [x]

| | 4 | 总结 | 已完成 |
- [x]

|

遇到的问题和解决思路

遇到的问题

  1. 对象转换数据类型时
  2. 对象转换字符串类型时
  3. 今天遇到函数的存储方式

    解决思路

  4. NaN

  5. [object Object]
  6. 函数也是复杂数据类型,当调用函数内部的变量时,要注意局部变量和全局变量

    今日总结

    (1)js中转换为字符串类型

    <!DOCTYPE html>










    (2)js中转换为数值类型

    <!DOCTYPE html>










    (3)js中转换为布尔类型

    <!DOCTYPE html>











    (4)是否是一个非数字

    <!DOCTYPE html>











    (5)自己遇到的问题

    <!DOCTYPE html>










续昨天

11.5 数据类型转换(变量)


强制转换:编程人员编写代码强制对数据进行转换。

隐式转换:不是编程人员刻意去转换的,而是浏览器(JS 解析引擎)帮我们自动转换的。

11.5.1 其他类型转成Boolean

使用 Boolean( ) 方法将其他类型的数据转换成 Boolean 类型。

下面这些值将被转换成 false

  • false
  • undefined
  • null
  • 0
  • NaN(不是一个数值)
  • ‘ ’
console.log(Boolean(false)); // false

console.log(Boolean(undefined)); // false

console.log(Boolean(null)); // false

console.log(Boolean(0)); // false

console.log(Boolean(-0)); // false

console.log(Boolean(NaN)); // false

console.log(Boolean('')); // false

下面这些值将被转换成 true。

  • 非空字符串
  • 非零数字
  • 对象
  • true
    ```javascript console.log(Boolean(true)); // true

console.log(Boolean(9527)); // true

console.log(Boolean({myname: ‘Bob’})); // true

console.log(Boolean(‘abcd’)); // true


<a name="0c54f946"></a>
#### 11.5.2 其他类型转成Number

![zhuanhuan.jpg](https://cdn.nlark.com/yuque/0/2021/jpeg/220376/1626942757986-4406d53e-ae72-4c66-9ee2-6a97cba75f44.jpeg#clientId=u5634d28b-235f-4&from=drop&id=ub22a8c30&margin=%5Bobject%20Object%5D&name=zhuanhuan.jpg&originHeight=348&originWidth=685&originalType=binary&ratio=1&size=67315&status=done&style=none&taskId=ucef61a55-3424-48ad-8f23-5dcb116fb58)

- 使用 Number() 方法将其他类型的数据转换成 Number 类型

```javascript
// 将数字类型的字符串,最后的结果保留原数据。

console.log(Number('123.456')); // 123.456

console.log(Number('789')); // 789

// 如果是非数字类型的字符串的话,直接转换成 NaN。

console.log(Number('abc')); // NaN

console.log(Number('123abc')); // NaN

console.log(Number('abc123')); // NaN

console.log(Number(null)); // 0

console.log(Number(true)); // 1

console.log(Number(false)); // 0

console.log(Number(undefined)); // NaN

console.log(Number({myName: '李四'})); // NaN
  • 使用 parseInt() 方法将其他类型的数据转换成 Number 类型
//将数字类型的字符串通过该方法转换后,只保留数字的整数部分,不会进行四舍五入运算。

console.log(parseInt('123.456')); // 123

// 非数字类型的字符串转换后的结果为NaN。

console.log(parseInt('abc')); // NaN

console.log(parseInt('789')); // 789

// 以数字开始的字符串,保留数字部分忽略其他内容

console.log(parseInt('789abc')); // 789

// 以数字结尾的字符串,转换成 NaN

console.log(parseInt('abc789')); // NaN

// 将布尔值转换成 Number 类型

console.log(parseInt(true)); // NaN

console.log(parseInt(false)); // NaN

// undefined

console.log(parseInt(undefined)); // NaN

// null

console.log(parseInt(null)); // NaN

console.log(parseInt({name: '李四'})); // NaN
  • 使用 parseFloat() 方法将其他类型的数据转换成 Number 类型
// 结果保留原数据,不会对数字进行四舍五入运算。

console.log(parseFloat('123.456')); // 123.456

console.log(parseFloat('abc')); // NaN

console.log(parseFloat('789')); // 789

// 如果在数字后加上非数字的字符,也可以转换成功

console.log(parseFloat('789abc')); // 789

console.log(parseFloat('abc789')); // NaN

// 将布尔值转换成 Number 类型

console.log(parseFloat(true)); // NaN

console.log(parseFloat(false)); // NaN

// undefined

console.log(parseFloat(undefined)); // NaN

// null

console.log(parseFloat(null)); // NaN

console.log(parseFloat({name: '李四'})); // NaN
  • 利用隐式转换将字符串类型的数据转换成 Number 类型
// 当非数字类型的字符串相减时,结果都等于NaN

console.log('abc' - '18'); // NaN

// 当数字类型的字符串进行
// 乘、除、取余运算时,首先会将字符串转换成数字,然后再进行减运算,最终的结果返回的是数值型。

console.log('28' - '18'); // 10 

console.log('32' / '4'); // 8 

console.log('3' * '4'); // 12 

console.log('12' % '5'); // 2
  • 用于检查其参数是否是非数字值(isNaN() 函数)
console.log(isNaN(123)); //false
console.log(isNaN(-1.23)); //false
console.log(isNaN(5 - 2)); //false
console.log(isNaN(0)); //false
console.log(isNaN("Hello")); //true
console.log(isNaN("2005")); //true

11.5.3 其他类型转成String

使用 String() 方法和toString()将其他类型的数据转换成 String 类型。

  • String()函数可以将任意类型转换为字符型;
  • 除了null和undefined没有toString()方法外,其他数据类型都可以完成字符的转换。
console.log(String(123.456)); // '123.456'

console.log(String(null)); // 'null'

console.log(String(true)); // 'true'

console.log(String({myName: '李四'})); // '[object Object]'

var num = 10;
console.log(num.toString());    //10
console.log(num.toString(2));    //1010
console.log(num.toString(8));    //12
console.log(num.toString(16));    //a

注意:

使用加号操作符(+)把它与一个空字符串(””)相加。

console.log(12 + ''); // '12' 最终的结果返回的是字符型
console.log(12 + 3 + '4'); // '154'
console.log( '4'+ 12 + 3); // '4123'

自己总结

一定要注意全局变量和局部变量
函数也是复杂数据类型,可以使用函数名.xxx给函数增加属性

1.将某种数据类型转换为字符串类型的两种方法
方式一:
- 调用被转换数据类型的toString()方法
- 该方法不会影响到原变量,它会将转换的结果返回
- 但是注意:null和undefined这两个值没有toString()方法,
如果调用他们的方法,会报错
- 对象调用时,打印[object Object]

方式二:
- 调用String()函数,并将被转换的数据作为参数传递给函数
- 使用String()函数做强制类型转换时,
对于Number和Boolean实际上就是调用的toString()方法
但是对于null和undefined,就不会调用toString()方法
它会将 null 直接转换为 “null”
将 undefined 直接转换为 “undefined”
- 对象使用时,打印[object Object]

2.将某种数据类型转换为数值类型的三种方法
转换方式一:
使用Number()函数
- 字符串 -> 数字
1.如果是纯数字的字符串,则直接将其转换为数字
2.如果字符串中有非数字的内容,则转换为NaN
3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为0
- 布尔 -> 数字
true 转成 1
false 转成 0

- null -> 数字 0

- undefined -> 数字 NaN
-对象->数值
对象为NaN

转换方式二:
- 这种方式专门用来对付字符串
- parseInt() 把一个字符串转换为一个整数
数值类型 会取整
字符串
若前面没有字母,后面有,忽略后面的字母再转换
若前面与字母,转换为NaN
空字符串:NaN
布尔
null
undefined
对象
都为NaN
- parseFloat() 把一个字符串转换为一个浮点数
数值类型 会保留小数点位
字符串
若前面和中间没有字母,后面有,忽略后面的字母再转换,保留小数点位
若前面没有字母,中间有,会截断字母后面的值,再转换
若前面字母,转换为NaN
空字符串:NaN
布尔
null
undefined
对象
都为NaN

3.将某种类型的值转换成布尔值的函数是什么,其中有哪些被转换成了false

- 使用Boolean()函数
- 数字 -> 布尔
- 除了0和NaN,其余的都是true

- 字符串 -> 布尔
- 除了空串,其余的都是true

- null和undefined都会转换为false

- 对象也会转换为true

隐式类型转换
通过Number()转换的
字符串
加法时,不会将字符串转换为数值型,会进行拼接
减法 除法 乘法 取余 是先转换为数值型再计算
null 是转为0
undefined为NaN
对象
会通过toString() 方法转换为[object Object]
Boolean
true 1 false 0
任何值与NaN计算都为NaN,除了(字符串加法)

+”123” 通过Number()转换的

isNaN()
通过Number()转换的
Infinity:无穷大
Infinity:无穷小
isNaN()false