功能和不必需的变量
问题描述:
在PHP中,我们可以指定变量的默认值在像功能:功能和不必需的变量
function myFunction(myDefaultVariable, myOtherVariable, myCheckVariable = "basic"){
// so yeah, myDefaultVariable is required always,
// same applies for myOtherVariable,
// and myCheckVariable can be skipped in function call, because it has a default value already specified.
}
有没有类似这样的东西在JavaScript?
答
你不需要在Javascript中传递所有变量。
虽然少哈克的方式是使用对象:
function foo(args) {
var text = args.text || 'Bar';
alert(text);
}
要叫它:
foo({ text: 'Hello' }); // will alert "Hello"
foo(); // will alert "Bar" as it was assigned if args.text was null
答
不完全是,但你可以通过检查这个值是通过模拟它和设置默认,例如
optionalArg = (typeof optionalArg == "undefined")?'defaultValue':optionalArg
注意像这样的技术的原理,即使optionalArg供应,但计算结果为假的 - 这就像optionalArg=optionalArg || 'default'
一个简单的成语失败上。
同样在每个函数中,您都可以访问一个名为arguments的数组,该数组将包含传递给该函数的所有参数,您可以使用它来使用具有可变长度参数列表的函数。
答
没有我知道的:
但是有两种方法可以解决这个问题。
//1. function.arguments - this is advisable if you don't know the
// maximum number of passed arguments.
function foo() {
var argv = foo.arguments;
var argc = argv.length;
for (var i = 0; i < argc; i++) {
alert("Argument " + i + " = " + argv[i]);
}
}
foo('hello', 'world');
//2. "Or" operator - this is good for functions where you know the
// details of the optional variable(s).
function foo (word1, word2) {
word2 = word2 || 'world';
alert (word1 + ' ' + word2);
}
foo ('hello'); // Alerts "hello world"
你基本上是传递一个参数:与对应于“参数的属性的对象,做我的理解对不对 – Piskvor 2010-09-07 07:30:00
啊,谢谢正是我一直在寻找 – jolt 2010-09-07 07:30:18
@Piskvor - 是正确的吗?!。它的一个参数包含了你可以访问的属性,其中任何一个都可以为null,所以它的重要性在于检查而不是假定它们已经被指定。通常,对于'mandatory'参数,我检查它们是否在顶部提供该方法抛出一个异常,如果不是这样的话。'if(!('参数'在args中))抛出('参数是一个必需的参数');' – 2010-09-07 07:34:07