✊总有人要成为第一,为什么不是你。
2021年07月28日
工作重点
1 | 工作重点事项 | 进度 | 已完成 |
---|---|---|---|
2 | 上午将JavaScript的基本数据类型和复杂数据类型的存储方式 | 已完成 | - [x] |
|
| 3 | 下午讲JavaScript的基本数据类型转化 | 已完成 |
- [x]
|
| 4 | 总结 | 已完成 |
- [x]
|
遇到的问题和解决思路
遇到的问题
- 对象转换数据类型时
- 对象转换字符串类型时
-
解决思路
NaN
- [object Object]
- 函数也是复杂数据类型,当调用函数内部的变量时,要注意局部变量和全局变量
今日总结
(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

- 使用 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