Javascript 如何检查函数调用是否有参数
当前,ny变量显示为定义为全局变量,但当我调用测试函数时,我不想只检查ny参数是否已设置。我不希望Type(NY)考虑全局NY变量。Javascript 如何检查函数调用是否有参数,javascript,Javascript,当前,ny变量显示为定义为全局变量,但当我调用测试函数时,我不想只检查ny参数是否已设置。我不希望Type(NY)考虑全局NY变量。 ny = 1; var test = function(ny){ console.log(typeof ny ==='undefined'); } test(); 我不希望Type(NY)考虑全局NY变量。< /P> 不会的。通过使用ny作为参数标识符,可以在外部范围内隐藏ny。您的示例将记录true。据我所知,那正是你想要的 旁注:是运算符,不是函数。
ny = 1;
var test = function(ny){
console.log(typeof ny ==='undefined');
}
test();
我不希望Type(NY)考虑全局NY变量。< /P>
不会的。通过使用ny
作为参数标识符,可以在外部范围内隐藏ny
。您的示例将记录true
。据我所知,那正是你想要的
旁注:是运算符,不是函数。您不需要括号:
console.log(typeof ny === "undefined");
我不希望Type(NY)考虑全局NY变量。< /P>
不会的。通过使用ny
作为参数标识符,可以在外部范围内隐藏ny
。您的示例将记录true
。据我所知,那正是你想要的
旁注:是运算符,不是函数。您不需要括号:
console.log(typeof ny === "undefined");
如果要检查参数是否已传递到函数中,只需检查参数的长度 考虑以下功能:
var test = function (ny) {
console.log(arguments.length > 0);
};
test()
将记录false
test(ny)
将记录true
如果要检查参数是否已传递到函数中,只需检查参数的长度即可
考虑以下功能:
var test = function (ny) {
console.log(arguments.length > 0);
};
test()
将记录false
test(纽约)
将记录true
我知道的唯一方法:
JavaScript将逐步检查范围,并向外扩展。如果您有一个同名的全局变量,JavaScript最终会找到它并使用它。您不能让JavaScript忽略变量,无论其作用域如何。您可以检查函数中的
参数
数组您的示例正在进行chromeInside测试,即使未通过,ny始终是局部变量;如果未传递,则其值将未定义。因此,这应该在所有浏览器上都记录为“true”。此示例在chrome上运行。很抱歉,延迟回复导致网络崩溃\n您可以检查函数中的参数数组。您的示例在chromeInside测试中运行,即使未通过,ny将始终是局部变量;如果未传递,则其值将未定义。因此,这应该在所有浏览器上都记录为“true”。此示例在chrome上运行。很抱歉,延迟回复血腥网络崩溃\当建议是合理的时,请注意,在示例代码中,ny将始终引用局部变量。当建议是合理的时,请注意,在示例代码中,ny将始终引用局部变量。您好,我在chrome typeof ny中运行了代码==“undefined”返回trueYes,准确地说。您希望它返回什么?当我在函数ny
不是全局变量的内部调用test()时,它应该返回false。你已经跟踪了它。如果不向函数传递任何内容,函数内的ny
将未定义。我真的不明白问题出在哪里。@wilsonrufus,James说“阴影”的意思是你正在启动一个新的ny
变量。将ny
定义为函数的参数与在函数内声明var ny
具有相同的效果。函数中的ny
具有局部作用域。如果您想在定义本地ny
时访问全局ny
,请参阅window.ny
。您好,我在chrome typeof ny中运行了代码==“undefined”返回的是真的。您希望它返回什么?当我在函数ny
不是全局变量的内部调用test()时,它应该返回false。你已经跟踪了它。如果不向函数传递任何内容,函数内的ny
将未定义。我真的不明白问题出在哪里。@wilsonrufus,James说“阴影”的意思是你正在启动一个新的ny
变量。将ny
定义为函数的参数与在函数内声明var ny
具有相同的效果。函数中的ny
具有局部作用域。如果要在定义本地ny
时访问全局ny
,请参阅window.ny
。如果我有多个参数怎么办means@wilsonrufus,我编写的函数只检查参数的存在。您可以有任意数量的参数。例如,如果将函数中的console语句更改为console.log(arguments.length)
,然后调用test(ny,'second argument')
,则日志将显示2
。但是,不能调用参数的name
属性,因为该属性未定义arguments
是一个数组,因此您可以访问数组的所有属性。如果我有多个参数怎么办means@wilsonrufus,我编写的函数只检查参数的存在。您可以有任意数量的参数。例如,如果将函数中的console语句更改为console.log(arguments.length)
,然后调用test(ny,'second argument')
,则日志将显示2
。但是,不能调用参数的name
属性,因为该属性未定义<代码>参数
是一个数组,因此您可以访问数组的所有属性。