我需要创建一个函数来向其发送自定义参数。 我试图让参数具有默认值,它是未定义的。
但是我无法理解,我总是给我提供默认参数的代码。我做错了什么?
<script>
sn_test({
type: "image",
file: "test.jpg",
breakingPoint: 100
});
</script>
JS
function sn_test(args) {
var options = {
Type: args.type,
File: args.file
};
var default_options = {
breakingPoint: 2000
};
args = $.extend({}, default_options, args);
$("#result1").html(options.Type);
$("#result2").html(options.File);
$("#result3").html(default_options.breakingPoint);
}
答案 0 :(得分:3)
您要将#result3
的内容设为default_options.breakingPoint
而不是args.breakingPoint
。
这应解决问题:
$("#result3").html(args.breakingPoint);
答案 1 :(得分:1)
答案 2 :(得分:1)
您的代码中存在一些错误:
Type
,而type
正在传递。default_options
扩展args
,而不是options
,而您已初步化,这使得它变得毫无用处。default_options.breakPoint
代替options.breakPoint
#result3
。对于您的变量以及分配给他们的内容,似乎有点混乱。
你想要的是:
args
- 这些是传递给方法的参数(传递的选项)default_options
- 包含默认选项的对象。options
- 包含合并选项的对象。这些都需要匹配案例。
编辑:如果可能的话,还要考虑将default_options
声明移到功能范围之外,这意味着它不会在每次调用函数时创建,从而提高性能。 Here
答案 3 :(得分:0)
您始终使用default_options.breakingPoint而不是重写的值。试试这个:
var sn_test = (function () {
var default_options = {
breakingPoint: 2000
};
return function (args) {
args = $.extend({}, default_options, args);
$("#result1").html(args.type);
$("#result2").html(args.file);
$("#result3").html(args.breakingPoint);
};
})();