Javascript 帮助我编写一个简单函数,在未声明时传递参数值0

Javascript 帮助我编写一个简单函数,在未声明时传递参数值0,javascript,function,parameter-passing,Javascript,Function,Parameter Passing,我不知道什么是最好的方式写它,以及如何。。。我有一个函数 function myFunc(myVal1, myVal2){/*... various things ...*/}; 其中myVal1和myVal2是数字 有时,我希望通过调用myFunc(myVal1),能够调用只传递一个参数的函数。这样做,我希望myVal2将有一个标准值,如果没有声明,为0 我在想写点什么 function myFunc(myVal1, myVal2){ if(myVal2 == NaN)

我不知道什么是最好的方式写它,以及如何。。。我有一个函数

function myFunc(myVal1, myVal2){/*... various things ...*/};
其中myVal1和myVal2是数字

有时,我希望通过调用myFunc(myVal1),能够调用只传递一个参数的函数。这样做,我希望myVal2将有一个标准值,如果没有声明,为0

我在想写点什么

function myFunc(myVal1, myVal2){
    if(myVal2 == NaN)
         myVal2 = 0;
    }
}
但我不认为这是正确的方法。
谢谢你的帮助

未设置的参数的类型未定义,请按如下方式进行测试

function myFunc(myVal1, myVal2){ 
    if(typeof myVal2 == "undefined") 
         myVal2 = 0; 
    //the rest of the function goes here
} 
如果希望myVal2默认为0以外的任何值,则必须更加明确,因为0的计算结果为false。因此:

if (!myVal2===undefined) {
  myVal2 = 3;
}
我们应该做到这一点

去罗马的更多方式(除了myVal2的类型==“未定义”):

最后,特别是对于


可能会有帮助。
!myVal2将始终返回布尔值-true或false。所以你在
中的语句如果
永远不会被执行,我想第一个代码示例就是为了说明这一点,第二个是他建议你这样做的方式。尝试访问未定义的变量会在控制台中产生JS错误,这是一种不好的做法,因为它会掩盖更严重的错误,所以总是测试未定义的错误。这就是ehr,奇怪的评论。在这种情况下(我特别回答了这个问题),变量被定义为一个参数,所以以这种方式检查它是无害的,而且很短。在你的控制台中试试这个:函数bollocks(b1){alert(b1 | |'b1没有值');};[输入]bollocks();对它进行了更多的测试,我认为这是正确的,它在作为单个元素使用时不会产生错误。
if (!myVal2===undefined) {
  myVal2 = 3;
}
function myFunc(myVal1, myVal2){ 
    // if myVal2 is defined, keep the value, otherwise assign 0
    myVal2 = myVal2 || 0; 
} 
function myFunc(myVal1, myVal2){ 
    // if myVal2 is defined, keep the value, otherwise assign 0
    // using a ternary operator
    var myVal2check = myVal2 ? myVal2 :  0; 
}


function myFunc(myVal1, myVal2){ 
    // if myVal2 is defined, keep the value, otherwise assign 0
    // if myVal2 needs to be an integer
    myVal2 = parseInt(myVal2,10) ||  0; 
}

function myFunc(myVal1, myVal2){ 
    // if myVal2 is defined, keep the value, otherwise assign 0
    // using a regexp to determine the 'undefinedness'
    var myVal2check = String(myVal2).match(/undef/i) ? myVal2 :  0; 
}
function myFunc(myVal1){ 
    // no myVal2 defined in the parameter section
    var myVal2check = window.myVal2 ? myVal2 :  0;
}