Default value for parameter expect function
本问题已经有最佳答案,请猛点这里访问。
我想为期望接收函数的函数参数添加默认值。
请看以下示例:
1 2 3 4 5 6 7 8 9 10 11 12 | /** * @param {function} callback * @param {String} name */ function example(callback, name){ console.log('Hello' + name + 'from parent function'); callback(); } // implementation example(null,"Mickey"); |
我想把
在javascript中,通常测试参数是
1 | callback = callback || (some default value); |
使用
在您的情况下,您的默认值是一个函数:
1 2 3 4 5 | function example(opt_callback, name) { var callback = opt_callback || function() {}; console.log('Hello' + name + 'from parent function'); callback(); } |
这里,默认函数不提供任何内容,但是您可以在这里向默认函数添加一些默认行为。
使用
除非有其他可重写的可读性原因,否则最好将可选参数放在参数列表的末尾,例如:
1 2 | function example(name, opt_callback) { ... |
这样,调用方只需一个参数即可简洁地调用函数,例如
由于函数的类型为"function",所以可以进行简单的类型检查。虽然JavaScript函数是一流的,所以您不需要做太多的更改。
1 2 3 4 5 6 7 8 9 10 11 | /** * @param {function} callback * @param {String} name */ function example(callback, name){ if (typeof a !=="function") { callback = function(){ }; // replace this with your default function } console.log('Hello' + name + 'from parent function'); callback(); } |
有关更深入的答案,请参阅此处的受保护答案。
编辑:作为旁白,最好将可选回调设置为第二个参数。这样,您就不必显式地传递空值来获取默认值。
1 2 3 4 5 | function example(name, callback) { ... } example("hello"); // callback has value null example("hello", function(){...}); // also valid |