作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个可以接受 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/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!