我在javascript中看到很多有3个参数的函数,例如第二个参数是一个值,第三个参数是一个函数,当你省略第二个参数时,并像第二个参数一样发送第三个参数(函数);没有错误。它是如何运作的? 在某些情况下,第二个和第三个参数是函数,那么这样做吗?这背后的架构是什么?
示例:
完整 3 个参数:
client.query('SELECT $1::int AS number', ['1'], function(err, result) {
2个参数:
client.query('SELECT * from accounts', function(err, result)
3 个参数,第二个参数为 null:
client.query('SELECT * from accounts', null, function(err, result)
最佳答案
ES2015之前有这样的方式:
function foo(param1, param2, param3){
if(!param2){
param2 = standard_value;
}
if(!param3){
param3 = standard_value;
}
if(typeof param2 === "function"){
param3 = param2;
}
// do stuff
}
使用 ES2015 你可以使用这个:
function foo(param1, param2 = standard_value, param3 = standard_value){
if(typeof param2 === "function"){
param3 = param2;
}
// do stuff
}
关于javascript,函数中省略参数,不影响函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40840202/