Javascript 传入不带';不存在或未定义?

Javascript 传入不带';不存在或未定义?,javascript,Javascript,我想知道,如果我的函数接受4个参数a、b、c、d,那么最佳做法是什么,但我遇到的情况是,我没有为参数c传递值,但需要为参数d传递值,因此: function myFunction(a,b,c,d) { //... } myFunction(paramA, paramB, '', paramD); 您是否将未定义的参数c传入,然后在函数内部执行检查或类似操作?更好的方法是为我使用Object: 然后在函数中,您可以检查空参数并传递默认值: function myFunction( optio

我想知道,如果我的函数接受4个参数a、b、c、d,那么最佳做法是什么,但我遇到的情况是,我没有为参数c传递值,但需要为参数d传递值,因此:

function myFunction(a,b,c,d) {
 //...
}

myFunction(paramA, paramB, '', paramD);
您是否将未定义的参数c传入,然后在函数内部执行检查或类似操作?

更好的方法是为我使用Object:

然后在函数中,您可以检查空参数并传递默认值:

function myFunction( options ) {
    options = options || {};
    options.paramA = options.paramA || "defaultValue";
    // etc...
}    

您可以在函数签名中将任何可选参数设置为最右边,这样您就可以在调用函数时将其关闭

function myFunction(a, b, d, c) {
    // ...
}

myFunction(1, 2, 3, 4);

// call without 'c'
myFunction(1, 2, 3);

null
作为您没有的参数传递
undefined(代码>未定义)
有点专业化,尽管它们的工作方式相同。

我发现,如果未定义默认值,则将其设置为最简单/可靠的解决方案

function myFunction(a,b,c,d) {
    if (typeof a === 'undefined') { a = 'val'; }
    if (typeof b === 'undefined') { b = 'val'; }
    if (typeof c === 'undefined') { c = 'val'; }
    if (typeof d === 'undefined') { d = 'val'; }
}

如果您知道传递了什么参数,则可以使用函数的参数“arguments”。例如:

 function example(a, b, c, d) {
 if (arguments.length < 4) {
   paramC = defaultParam; // something default value for passed C
   }
 }
函数示例(a、b、c、d){
如果(参数长度<4){
paramC=defaultParam;//传递的C的默认值
}
}

有很多相关的问题:。它不是在所有情况下都适用于交换参数。@Dineshkani我不知道你想说什么。不仅仅是
如果(a==undefined){a='val';}
更干净吗?使用
undefined
全局不一定是最安全的方法,因为全局可以被覆盖<代码>类型a==='undefined'是最全面的IMHO。公平点。我想知道是否真的值得担心未定义的被覆盖。此外,在严格模式下,尝试定义未定义将引发异常。因此,更常见的严格模式就越不可能出现这种情况。
 function example(a, b, c, d) {
 if (arguments.length < 4) {
   paramC = defaultParam; // something default value for passed C
   }
 }