目录
[2.async 函数](#2.async 函数)
[3.for in、 for of、 forEach三者之间的区别?](#3.for in、 for of、 forEach三者之间的区别?)
1.数值拓展
Number.isFinite 只针对有效数值返回true 对于非有效数值返回false 不做隐式转换
Number.isNaN 只对于NaN返回true 对于非NaN返回false
Number.parseInt 将其他数据类型转为number类型 取整
Number.parseFloat 将其他数据类型转为number类型 保留小数
Number.interge 检测数值是否是整数
javascript
// isFinite 检测值是否是有效值 隐式转换
console.log(isFinite(null));
console.log(isFinite(""));
console.log(isFinite('10'));
console.log(isFinite(true));
console.log(isFinite([]));
console.log(isFinite('hello'/10));
// isNaN 判断是否是一个数字 是数字返回false 其他返回true
console.log(isNaN(10));
console.log(isNaN('hello'/10));
console.log(isNaN('hello'));
// Number.isFinite 检测有效值 对于有效值返回true 对于无效值返回false 不做隐式转换
// Number.isNaN 对于非NaN一律返回false 只有对NaN才返回true
// isNaN 只对数字返回false 其他都返回true
console.log(Number.isFinite(null));
console.log(Number.isFinite(''));
console.log(Number.isFinite('10'));
console.log(Number.isFinite(true));
console.log(Number.isFinite(10));
console.log(Number.isNaN('hello'/10));
console.log(Number.isNaN('hello'));//只对NaN返回true 其他都是false
console.log(isNaN('hello'));//只对数字返回false 其他都返回true
console.log(Number.isNaN(10));
// parseInt parseFloat
console.log(Number.parseInt('10.1'));
console.log(Number.parseInt('10.123'));
console.log(Number.parseFloat('12.123'));
console.log(Number.parseFloat('12.123#'));
// 检测是否是整数 对于整数返回true 对于非整数返回false
console.log(Number.isInteger('12.1'));
console.log(Number.isInteger(12));
console.log(Number.isInteger(12.1));
console.log(Number.isInteger('12'));
2.async 函数
异步编程解决方法 内部封装了generator函数 异步编程同步解决 简化promise api链式调用
async function getAll(){
let res = await get();
}
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/1.5.0/axios.min.js"></script>
</head>
<body>
<script>
/**
* 异步编程解决方案 异步编程同步处理 简化promise API一种解决方案
* 内部封装了generator函数 与await配合使用
* Promise{}
*/
async function findAll() {
let res = await axios.get('自己的服务器地址');
console.log(res, '获取响应1');
// 捕获异常和错误
try {
let res = await axios.get('自己的服务器地址');
console.log(res, '获取响应111111111');
} catch (error) {
throw new Error(error,'请求失败')
} finally {
console.log('最终执行')
}
axios.get().then().catch()
axios.get('自己的服务器地址').then(res=>{
console.log(res.data,'获取响应')
}).catch(error=>{
console.log(error,'444');
})
}
findAll();
</script>
</body>
</html>
3.for in、 for of、 forEach三者之间的区别?
1.forEach是遍历数组、set、map 实例方法
2.for in 循环遍历数组、对象、字符串、类数组对象
3.for of 只能遍历实现了迭代器接口对象 对象不可以直接使用for...of遍历
4.generator函数
异步编程解决方法 function 和函数名之间使用*隔开
内部封装多个状态,一个yield就是一个状态 执行generator函数得到一个迭代器对象
迭代器对象调用next方法 可以运行内部状态
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/**
* generator函数异步编程解决方案 内部封装了多个状态 使用yiled表示每一个状态
* function和函数名之间使用* 隔开 调用generator函数会得到一个迭代器对象
* 迭代器对象调用next方法可以执行每一个状态
*/
function * generator(){
// generator函数内部使用yield表示一个状态 一个yield就是一个状态 一个yield就是一个代码运行节点
yield '1';
yield '2';
yield '3';
return '4'
// generator函数最后一个状态可以使用return返回
}
let res = generator();//调用generator函数得到一个迭代器对象
console.log(res.next());//调用一次next方法执行一个状态
console.log(res.next());//调用一次next方法执行一个状态
console.log(res.next());//调用一次next方法执行一个状态
console.log(res.next());//调用一次next方法执行一个状态
// function foo(){
// // 执行代码 返回
// return 1
// // 执行代码 返回
// return 2
// // 执行代码 返回
// return 3
// }
// console.log(foo());
</script>
</body>
</html>