[TOC]
1.Math对象
- 属于引用数据类型,
- Math.abs();取绝对值,如果传入的不是数字,会转数字类型.如果转成数字类型是NaN,输出结果也是NaN
- Math.PI:圆周率
- Math.ceil();向上取整
- Math.floor();向下取整
- Math.round();四舍五入
- Math.max();取最大值
…扩展预算符:可以将数据进行直接扩展
// console.log(Math.PI); // console.log(Math.abs(undefined)); // NaN // console.log(Math.abs(true)); // 1 // console.log(Math.ceil(3.1)); // 4 // console.log(Math.ceil(3.9)); // 4 // console.log(Math.floor(3.1)); // 3 // console.log(Math.floor(3.1)); // 3 // console.log(Math.round(3.1)); // 3 // console.log(Math.round(3.5)); // 4
扩展运算符和收缩运算符 ```javascript
// ...扩展收缩运算符 // let ary = [1, true, 3, 4]; // console.log(...ary); // 此时的...就是把数组展开变成多个值 // // 1 true 3 4
// function fn(...arg) { // 收缩或者剩余运算符
// console.log(arg); // [1,2,3]
// }
// fn(1, 2, 3)
function sum(...arg) { // 剩余运算符或者收缩运算符,可以把所有的实参收缩到一个数组里
// console.log(arg);
let total = null;
arg.forEach(function(item, index) {
//item是数组的每一项 index是每一项的索引
// console.log(item, index);
var cur = Number(item);
if (!isNaN(cur)) {
total += cur
}
})
return total;
}
let res = sum(true, false, 1, undefined);
console.log(res);
- Math.random();取0-1之间得一个随机数
```javascript
// 需求:获取3到6之间的随机整数
// console.log(Math.round(Math.random()));
// 获取0到1之间的随机整数(包括0和1的)
// console.log(Math.random() * (6-3) + 3)
// 0-6之间的随机小数 0-3之间的随机小数 3-6之间的随机小数
// console.log(Math.round(Math.random() * (6 - 3) + 3))
// 获取n到m之间的随机整数(包括n和m)
// Math.round(Math.random()*(m-n)+n);
// 想获取1到10之间的随机整数
// console.log(Math.round(Math.random() * (10 - 1) + 1));
- Math.sqrt:开平方
-
2.Map映射数组
let box = document.getElementById('box') // ajax 从后台把数据请求过来 let ary = ['我是小狗', '疫情爆发']; // 从后台请求来的数据 // ['<li>1</li>','<li>2</li>','<li>3</li>','<li>4</li>'] let res = ary.map(function(item, index) { // return '<li>' + item + '</li>' // return '<li>${item}</li>' return `<li>.${item}334456565${index}</li>` // es6的模板字符串${}里边可以写变量 }); res = res.join(''); console.log(res); box.innerHTML = res; console.log(res);
3.计时器
SetTimeout,只能执行一次,参数为两个,函数与执行的时间间隔
- SetInterVal,再没有被暂停的时候执行无数次
- clearTimeout,删除计时器
- clearInterval,删除一直执行的计时器
可以传第三个参数,第三个参数是自己回调函数的实参 ```javascript
// 定时器:设置一个时间,当到达了规定的时间以后去做什么事 // 设置定时器有两种 setTimeout setInterval // setTimeout:一次性的定时器,只能执行一次 // setInterval:是一个周期性的定时器,每间隔一段时间,就会执行一次 // 定时器的参数:第一个参数是函数,第二个参数是单位为毫秒的时间 // 清空定时器:clearTimeout(定时器的返回值) // clearInterval(定时器的返回值) // 定时器的返回值:是一个数字,代表了当前定时器在页面中的位置
// let a = setTimeout(function() {
// console.log(1);
// // 经过5秒钟之后,此处的函数才会执行
// }, 5000);
// // console.log(a); // 1
// setInterval(function() {
// console.log(1);
// // 间隔2秒就会执行一次此函数
// }, 2000);
// console.log(2);
//--------------------------------------
// 定时器的返回值:是一个数字,代表了当前定时器在页面中的位置
// let a = setTimeout(function(){console.log(1);},2000);
// let b = setTimeout(function(){console.log(2);},2000);
let c = setInterval(function() {
console.log(3);
}, 2000);
// console.log(a, b, c); // 1 2 3
btn.onclick = function() {
clearInterval(c)
}
</script>
<a name="HUki4"></a>
## 4.递归
- 含义:函数自己去调用自己就是递归
- 当使用递归的时候都会去写一个终止的条件
```javascript
// function fn() {
// console.log(1); // 1 1 1
// fn();
// // Maximum call stack size exceeded 堆栈溢出
// }
// fn()
let num = 1; // 2 3 4 5 6
function fn() {
// 我想让函数递归5次
if (num > 5) {
return;
}
console.log(1); // 1 1
num++;
fn();
}
fn()