一.函数提升
1.会把所有函数声明提升到当前作用域的最前面
2.只提升函数声明,不提升函数调用
fn();
function fn(){
console.log("函数提升");
}
fun();//报错
var fun=function() {
console.log("函数表达式");
}
函数表达式必须先声明和赋值 后调用 否则报错
总结:
1.函数提升能够使函数的声明调用更灵活
2.函数表达式不存在提升的现象
3.函数提升出现在相同作用域当中
二.函数参数
1.arguments 动态参数 只存在函数里面 是伪数组
let sum = 0;
for (let i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
let s = getSum(1, 2, 3);
console.log(s);
2. 剩余参数
剩余参数允许我们将一个不定数量的参数表示为一个数组
1....是语法符号。置于最末函数形参之前,用于获取多余的实参
2.借助...获取的剩余实参,是个真数组
开发中,还是提倡多使用剩余参数。
function getSum(...arr) {
// console.log(arr);//使用时不需要写...
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i]
}
console.log(sum);
}
getSum(1, 2);
getSum(1, 2, 3);
三.展开运算符
展开运算符(...)将一个数组进行展开
const arr=[1,5,3,8,2];
// 展开运算符 可以展开数组
console.log(...arr);//1 5 3 8 2
典型运用场景:求数组最大值(最小值)、合并数组等
const arr=[1,5,3,8,2];
// 1.求数组最大值
console.log(Math.max(...arr));//8
console.log(Math.min(...arr));//1
const arr=[1,5,3,8,2];
// 2.合并数组
const arr2=[4.5,7];
const arr1=[...arr,...arr2];
console.log(arr1);//[1,5,3,8,2,4,5,7]
注意:
剩余参数:函数参数使用,得到真数组
展开运算符:数组中使用,数组展开