JS的函数知识学习
函数的定义
字面量形式:
function fn() {
// 函数语句
}
匿名函数赋值方式:
let fn = function(){
// 函数语句
{
该函数存在变量提升,需要定义完函数后再执行,否则报错:
fun();
let fun = function() {
console.log('function');
};
全局函数与模块化函数
当我们使用赋值方式定义函数时,如果使用的关键字是 var,则该函数为全局函数:
var fn = function() {
console.log('function');
};
// window可以调用该函数
window.fn();
而当使用let关键字时,该函数就不属于全局函数:
let fn = function() {
console.log('function');
};
window.fn();
默认参数
函数的形参可以设置默认值。如果实参没有传递值时,该形参就为默认值,如果实参传值了,就形参的值就为实参传的值。
下面代码中,第三个形参赋予默认值12,调用函数时,可以只给2个实参
function sum(a, b, c = 12) {
return a + b + c;
}
console.log(sum(22, 24));
而当第三个实参赋予了值的时候,就会覆盖默认的形参值
function sum(a, b, c = 12) {
return a + b + c;
}
console.log(sum(22, 24, 52));
用一个数组排序来举例:
第二个形参为排序方式,如果实参没有传递type值,则默认以升序方式排序
function sortArr(arr, type = "asc") {
return arr.sort((a, b) => type == "asc" ? a - b : b - a);
}
console.log(sortArr([23, 343, 52, 43, 6, 34, 432, 2, 534]));
而当第二个实参有传值“desc”时,则按照实参给出的方式降序排序。