目前 ny 变量显示为定义为全局但当我调用测试函数时我不想只检查是否设置了 ny 参数。我不希望 typeof(ny) 考虑全局 ny 变量。
ny = 1;
var test = function(ny){
console.log(typeof ny ==='undefined');
}
test();
目前 ny 变量显示为定义为全局但当我调用测试函数时我不想只检查是否设置了 ny 参数。我不希望 typeof(ny) 考虑全局 ny 变量。
ny = 1;
var test = function(ny){
console.log(typeof ny ==='undefined');
}
test();
我不希望 typeof(ny) 考虑全局 ny 变量。
它不会。通过使用ny
作为参数标识符,您可以ny
在外部范围内隐藏 。您的示例将记录true
. 据我所知,这就是你想要的。
旁注:typeof
是一个运算符,而不是一个函数。你不需要括号:
console.log(typeof ny === "undefined");
如果要检查参数是否已传递到函数中,只需检查对象的arguments
长度即可。
考虑以下函数:
var test = function (ny) {
console.log(arguments.length > 0);
};
test()
将登录false
。
test(ny)
将登录true
。
我知道的唯一方法:
JavaScript 将逐步检查范围,向外扩展。如果你有一个同名的全局变量,JavaScript 最终会找到并使用它。无论范围如何,您都不能让 JavaScript 忽略变量。