如何在jquery中实现PHP函数的自定义参数

时间:2013-12-02 14:03:08

标签: javascript php jquery

我们在PHP中编写自定义函数的参数,如下所示:

function something ($arg = "")
{
  // then do something
}

如何在jquery中完成此操作?

这似乎不起作用:

function jq_something ($arg = "")
{

}

5 个答案:

答案 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暂时不支持此功能。虽然您可以使用下一种方法:

  1. 检查参数是否通过:

    function myFunc(name, gender) {
        name = name || 'unnamed';
        gender = gender || 'male';
    }
    
  2. 使用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);
    
  3. Fiddle