gpt4 book ai didi

javascript - 处理javascript中的可选参数

转载 作者:IT王子 更新时间:2023-10-29 02:38:19 24 4
gpt4 key购买 nike

我有一个可以接受 1、2 或 3 个参数的静态 javascript 函数:

function getData(id, parameters, callback) //parameters (associative array) and callback (function) are optional

我知道我总是可以测试给定参数是否未定义,但我怎么知道传递的是参数还是回调?

这样做的最佳方法是什么?


可以传入的示例:

1:

getData('offers');

2:

var array = new Array();
array['type']='lalal';
getData('offers',array);

3:

var foo = function (){...}
getData('offers',foo);

4:

getData('offers',array,foo);

最佳答案

你可以知道有多少arguments被传递给你的函数,你可以检查你的第二个参数是否是一个函数:

function getData (id, parameters, callback) {
if (arguments.length == 2) { // if only two arguments were supplied
if (Object.prototype.toString.call(parameters) == "[object Function]") {
callback = parameters;
}
}
//...
}

你也可以这样使用参数对象:

function getData (/*id, parameters, callback*/) {
var id = arguments[0], parameters, callback;

if (arguments.length == 2) { // only two arguments supplied
if (Object.prototype.toString.call(arguments[1]) == "[object Function]") {
callback = arguments[1]; // if is a function, set as 'callback'
} else {
parameters = arguments[1]; // if not a function, set as 'parameters'
}
} else if (arguments.length == 3) { // three arguments supplied
parameters = arguments[1];
callback = arguments[2];
}
//...
}

有兴趣的可以看看这个article John Resig,关于一种在 JavaScript 上模拟方法重载的技术。

关于javascript - 处理javascript中的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1529077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com