我想知道,你能用可选参数创建一个函数。
示例:
function parameterTest(test)
{
if exists(test)
{
alert('the parameter exists...');
}
else
{
alert('The parameter doesn\'t exist...');
}
}
因此,如果您致电parameterTest()
,那么结果将是一条消息“参数不存在......”。如果你打电话给parameterTest(true)
,那么它将返回“参数存在...”。
这可能吗?
答案 0 :(得分:70)
这是一种非常频繁的模式。
您可以使用
进行测试function parameterTest(bool) {
if (bool !== undefined) {
然后,您可以使用以下其中一种形式调用您的函数:
parameterTest();
parameterTest(someValue);
小心不要经常出现测试错误
if (!bool) {
因为您无法将未提供的值与false
,0
或""
区分开来。
答案 1 :(得分:10)
function parameterTest(bool)
{
if(typeof bool !== 'undefined')
{
alert('the parameter exists...');
}
else
{
alert('The parameter doesn\'t exist...');
}
}
答案 2 :(得分:7)
在JavaScript中,如果您忽略提供参数,则默认为undefined
。
您可以在浏览器控制台中或使用JSFiddle轻松地自行尝试。
如您所说,您可以检查参数是否存在,然后编写可以使用参数的函数。但是,JavaScript Garden(一个很好的资源)建议在大多数其他情况下远离typeof
,因为它的输出几乎没用(请查看results of typeof的表格。)
答案 3 :(得分:4)
检查的最佳方式: param 是否未定义
function parameterTest(param) {
if (param !== undefined)
...
param 也可以是变量或函数名称
答案 4 :(得分:1)
function parameterTest(p) {
if ( p === undefined)
alert('The parameter doesn\'t exist...');
else
alert('the parameter exists...');
}
答案 5 :(得分:1)
ModelChain
是真的
null == undefined
代码示例:
if (arg == null){
// arg was not passed.
}
var button = document.querySelector("button");
function myFunction(arg){
if(arg == null){
alert("argument was not passed.");
} else {
alert("argument " + arg + " was passed.");
}
}
答案 6 :(得分:1)
初始化默认值(如果不存在)
function loadDialog(fn, f, local, anim) {
switch (arguments.length) {
case 1: f=null;
case 2: local=false;
case 3: anim=false;
}
...
}
答案 7 :(得分:0)
这些答案都不是为我做的。我需要知道是否有人使用过这个参数。如果有人调用传递 undefined
的函数,我想将其视为他们使用该值作为参数。无论如何,使用一些现代 JS 的解决方案非常简单:
function parameterTest(...test) {
if (test.length) {
return `exists`;
} else {
return `not exists`;
}
}
parameterTest(123); // exists
parameterTest(undefined); // exists
parameterTest(); // not exists
parameterTest(window.blah); // exists
对于较旧的浏览器,您可以使用参数:
function parameterTest() {
if (arguments.length) {
return "exists";
} else {
return "not exists";
}
}
答案 8 :(得分:-1)
I know this is old, but this is my preferred way to check, and assign default values to functions:
function testParamFunction(param1, param2) {
param1 = typeof param1 === 'undefined' ? null : param1;
param2 = typeof param2 === 'undefined' ? 'default' : param2;
// exit if the required parameter is not passed
if (param1 === null) {
console.error('Required parameter was not passed');
return;
}
// param2 is not mandatory and is assigned a default value so
// things continue as long as param1 has a value
}