我们在PHP中编写自定义函数的参数,如下所示:
function something ($arg = "")
{
// then do something
}
如何在jquery中完成此操作?
这似乎不起作用:
function jq_something ($arg = "")
{
}
答案 0 :(得分:4)
检查功能:
function jq_something($arg) {
if ($arg === undefined) $arg = ""; // your default value
}
JavaScript中没有默认值语法。 (顺便说一句,这与jQuery完全无关。)
我认为jquery在调用函数时抛出一个arg的情况会抛出错误 - Mostafa Talebi 1分钟前
你一直在混淆jQuery和JavaScript。 jQuery只是一个库! jQuery没有特殊的语法定义;它不是一种单独的编程语言。无论如何,不,在JavaScript中你可以传递更多或更少的参数:
function test(a) {
console.log(a);
}
test("test"); // logs "test"
test(); // logs undefined
test(1, 2, 3); // logs 1
当然,如果你想要的话,当错误的参数数量时你可以抛出错误:
function threeArgs(a, b, c) {
if (arguments.length !== threeArgs.length) throw new Error("Incorrect number of arguments");
// ...
}
答案 1 :(得分:2)
这不是 jQuery 的限制,但完全没有在 JavaScript 中实现(可能除ES6外)。
目前的做法是检查未定义的或某些意外虚假值,然后修改为默认值。
function foo(x) {
if (undefined === x) x = 0;
return x;
}
foo('a'); // "a"
foo(1); // 1
foo(); // 0
foo(null); // null
foo(undefined); // 0
答案 2 :(得分:1)
尝试这样的
function jq_something (arg) {
arg = typeof arg !== 'undefined' ? arg : 'default_value';
}
答案 3 :(得分:0)
我认为,以下方法(如我的示例代码所示)可以帮助您:
function say_smth(options) {
var defaults = {"message":"hi", "user" : "Anonymous"};
if(undefined===options)
options = {}
for (key in defaults)
if(undefined===options[key]) options[key]=defaults[key];
alert (options['message'] + ', ' + options['user']);
}
say_smth(); //hi, Anonymous
say_smth({"user":"Peter"}); //hi, Peter
say_smth({"message":"nice hat"}); //nice hat, Anonymous
say_smth({"message":"go fish", "user":"Jack"});//go fish, Jack
答案 4 :(得分:0)
JavaScript暂时不支持此功能。虽然您可以使用下一种方法:
检查参数是否通过:
function myFunc(name, gender) {
name = name || 'unnamed';
gender = gender || 'male';
}
使用options
对象参数(对于更复杂的代码)并为未通过的选项预先设置默认值。
var Person,
mary;
Person = function(name, options) {
this.name = name;
this.setOptions(options || {});
};
Person.defaultOptions = {
age: 30,
gender: 'male'
};
Person.prototype.setOptions = function(options) {
this.options = $.extend({}, Person.defaultOptions, options);
};
mary = new Person('Mary', {gender: 'female'});
console.log(mary);