Javascript 如何在jquery中实现PHP函数的自定义参数
我们用PHP编写自定义函数的参数,如下所示:Javascript 如何在jquery中实现PHP函数的自定义参数,javascript,php,jquery,Javascript,Php,Jquery,我们用PHP编写自定义函数的参数,如下所示: function something ($arg = "") { // then do something } 在jquery中应该如何做到这一点 这似乎不起作用: function jq_something ($arg = "") { } 在功能内检查: function jq_something($arg) { if ($arg === undefined) $arg = ""; // your default value }
function something ($arg = "")
{
// then do something
}
在jquery中应该如何做到这一点
这似乎不起作用:
function jq_something ($arg = "")
{
}
在功能内检查:
function jq_something($arg) {
if ($arg === undefined) $arg = ""; // your default value
}
JavaScript中没有默认值语法。(顺便说一句,这与jQuery完全无关。)
我认为jquery会在调用函数时丢失参数的情况下抛出错误–1分钟前的Mostafa Talebi 您一直在混淆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");
// ...
}
这不是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
尝尝这样的
function jq_something (arg) {
arg = typeof arg !== 'undefined' ? arg : 'default_value';
}
我认为以下方法(如示例代码所示)可以帮助您:
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
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);
你的意思是这是jquery中的一个缺陷吗?这样做根本不是JavaScript语言语法的一部分,不管它是jquery之类的大型帮助程序库,MooTools或Prototype——这与其他语言特性(如类型暗示等)相同。我认为jquery在函数被调用时,如果缺少参数,就会抛出错误called@MostafaTalebi一点也不,Javascript对参数非常宽容。如果($arg===undefined)$arg=“”,您可以传递比函数期望的更多或更少的参数,而不会出现任何错误。@DoorKnold是否有理由使用检查
if($arg===undefined)$arg=“”
而不是$arg=$arg | |“default val”
?@DennisMartinez如果您想允许一些错误的值,例如'
,0
或null
?@DennisMartinez第一个值仅在$arg未定义时才用默认值替换$arg。第二个用于任何错误值,包括0
,null
,'
(空字符串)等foo(未定义)
应该返回未定义的。这就是为什么在这里检查typeOf x
看起来更准确的原因。但可以肯定的是,这取决于OP到底在寻找什么+1@A.Wolfftypeof未定义;//“undefined”
,人们使用typeof
的真正原因是undefined
在全局名称空间中过去不是不可变的,但现在已经有一段时间了。我的糟糕!你当然是正确的。检查arguments.length可能是“非”问题的解决方案。。。