wordpress建站项目,网络推广工作好吗,网易网站开发,提供专业网站建设函数的扩展 文章目录 函数的扩展1#xff1a;与解构赋值默认值结合使用2#xff1a;参数默认值空对象2.1 案例一2.2 案例二2.3 案例三2.4 案例四 3#xff1a;undefined null参数默认值的区别4#xff1a;函数length5#xff1a;作用域5.1 全局变量5.2#xff1a;局部变量…函数的扩展 文章目录 函数的扩展1与解构赋值默认值结合使用2参数默认值空对象2.1 案例一2.2 案例二2.3 案例三2.4 案例四 3undefined null参数默认值的区别4函数length5作用域5.1 全局变量5.2局部变量 6暂时性死区7函数作为参数7.1 案例一7.2 案例二 8应用8.1 参数默认值不可以省略8.2 参数默认值可以省略 1与解构赋值默认值结合使用
function fun1 ({a,b10}){console.log(a,b)
}
fun1({}) // 0,10
fun1({a:1,b:5}) // 1,5
// 应该对象的的形式函数内部才能解构取值
fun1() // 错误
2参数默认值空对象
提供一个参数默认值空对象
2.1 案例一
当函数内部进行解构时默认值为{}空对象a为undefined,b为默认值
function fun2 ({a,b2} {}){console.log(a,b)
}
fun2() // undefined22.2 案例二
function fun3 (url,{body,methodsget,header}){console.log(url,methods)
}第二个参数转一个空对象函数默认值 get 生效
fun3(http://localhost:3000/admin/icmAudit/findPage,{}) // http://localhost:3000/admin/icmAudit/findPage,get在没有传第二个参数时函数也没有默认第二个参数时会报错
fun3(http://localhost:3000/admin/icmAudit/findPage) // Uncaught TypeError: Cannot read properties of undefined (reading body)2.3 案例三
优化函数入参第二个参数添加默认值{}
function fun4 (url,{body,methodspost,header} {}){console.log(url,methods)
}在没有传第二个参数时函数第二个入参有默认值正常打印
fun4(http://localhost:3000/admin/icmAudit/findPage) // http://localhost:3000/admin/icmAudit/findPage,get2.4 案例四
函数参数默认值应该放在末尾如果不是末尾省略会报错
function fu2 (a1,b){console.log(a,b)
}
fu2(10,8) // 10,8
fu2(,6) // Uncaught SyntaxError: Unexpected token , 3undefined null参数默认值的区别
function fu3(a2,b3){console.log(a,b)
}测试默认值传undefined和null的区别
undefined 会触发参数默认值null没有触发参数默认值
fu3(undefined,null) // 2 null 4函数length
函数length将返回没有指定默认参数的length
console.log((function(a){}).length) // 1
console.log((function(a,b12){}).length) // 1
console.log(function(a,b,e10){}.length) // 2 默认参数后面的数据不计入length,所以默认参数应放在函数入参末尾避免不必要错误
console.log(function(a,b6,e){}.length) // 1 5作用域
let x1 12
function f4(x1,bx1) {console.log(b)
}
f4(6) // 65.1 全局变量
这时候全局变量a41没有使用到使用的是局部变量
第一个参数a4110,第二个参数a41取第一个参数的值那么b等于10输出10
let a41 10
function f41(a41,ba41) {console.log(b)
}f41(10) // 105.2局部变量
let a42 8
function f42(ba42) {let a42 12console.log(b)
}f42() // 输出8a42局部变量不会生效函数括号里面的ba42形成一个单独作用域
步骤一f42(ba42)b取a42值a42是变量取不到步骤二a42先在函数括号里面这个单独作用域中进行查找查找不到向上查找获取的是全局变量的值步骤三这时候b再取a42的值往下进入函数内部。步骤三这时候函数内部的b的值就是8了
6暂时性死区
let a43 10
function f43(a43a43) {
}
f43() // Cannot access a43 before initialization函数括号中let a43 a43,代码暂时性死区引起的错误
7函数作为参数
7.1 案例一
let fu44 12
function f44(fun () fu44) {let fu44 36console.log(fun())
}
f44() // 12和变量作为参数方法是相同的
7.2 案例二
复杂的函数参数
var fu46 1
function f46(fu46,b function () { fu46 2 }) {var fu46 12 // 这里的var 加上和去除最后打印的fu46值都不一样作用域不同b()console.log(fu46:,fu46)
}
f46() // 12
console.log(global fu46:,fu46) // 18应用
8.1 参数默认值不可以省略
function a11 () {throw new Error(缺少 paratment)
}function a12 ( arr a11()) {return arr
}a12() // Uncaught Error: 缺少 paratment8.2 参数默认值可以省略
function a13 (fun1 undefined) {console.log(1111)
}
a13() // 1111