目前,ny变量显示为全局但是当我调用测试函数时,我不想只检查是否设置了ny参数。我不希望typeof(ny)考虑全局的ny变量。
ny = 1;
var test = function(ny){
console.log(typeof ny ==='undefined');
}
test();
答案 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)
我知道的唯一方法:
JavaScript将逐步检查范围,向外扩展。如果你有一个名称的全局变量,JavaScript最终会找到它并使用它。无论范围如何,都无法让JavaScript忽略变量。