因为工作重点不在js 这一块,遇到js 的时候也就百度一下就够用了。最近有时间在研究node.js ,发现有的地方的同一个方法参数竟然可有可无,顺序貌似也随意就非常纳闷。
-
nodejs 举例子:
pool.getConnection(function(err, connection) {
// 获取参数
var param = req.query || req.params;
// 建立连接 增加一个
connection.query(insertSQL, [param.name,param.order],function(err, result) { if(result) { result = { code: 200, msg:'增加成功' }; } responseJSON(res, result); // 释放连接 connection.release(); }); });
connection 这里明明是三个参数: sql语句, sql绑定的参数, 查询回调方法
为啥还可以直接connection.query(insertSQL, function(err, result){})
这样少了一个参数
使用呢?对于php、Java。。。语言来说,缺省参数没有默认值不是应该也要给个空值占位的吗?为啥JavaScript就可以直接不要那个参数了???
js允许你定义函数的时候定义n个,调用函数的时候传小于或等于n个参数,不会报错。
其它语言中可能不允许这样做。
像楼主这样的,定义了三个参数,使用的时候传一三,直接跳过第二个参数的情况,是因为它的函数内部会通过判断参数类型来确定你传的是哪个参数。
比如nodejs中很多参数是(data,option,callback)这种的形式的,但使用的时候可能很多时候不参数传option参数,于是就直接变成(data,callback)了。
参数内部会判断第二个参数是不是函数,如果是的话,就把option设为默认值。