如何检查函数调用是否有参数

时间:2013-07-24 08:45:59

标签: javascript

目前,ny变量显示为全局但是当我调用测试函数时,我不想只检查是否设置了ny参数。我不希望typeof(ny)考虑全局的ny变量。

ny = 1;
var test = function(ny){
    console.log(typeof ny ==='undefined');
}
test();

3 个答案:

答案 0 :(得分:4)

  

我不希望typeof(ny)考虑全局的ny变量。

不会。通过使用ny作为参数标识符,您可以隐藏外部作用域中的ny。您的示例将记录true。据我所知,这就是你想要的。

旁注:typeof是一个运算符,而不是一个函数。你不需要括号:

console.log(typeof ny === "undefined");

答案 1 :(得分:2)

如果您想检查参数是否已传入您的函数,只需检查the arguments object的长度。

考虑以下功能:

var test = function (ny) {
    console.log(arguments.length > 0);
};

test()将记录false

test(ny)将记录true

答案 2 :(得分:0)

我知道的唯一方法:

  1. 不要制作全局变量。
  2. 不要对不同范围的变量使用相同的变量名称。
  3. JavaScript将逐步检查范围,向外扩展。如果你有一个名称的全局变量,JavaScript最终会找到它并使用它。无论范围如何,都无法让JavaScript忽略变量。