Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查函数调用是否有参数_Javascript - Fatal编程技术网

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

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变量显示为定义为全局变量,但当我调用测试函数时,我不想只检查ny参数是否已设置。我不希望Type(NY)考虑全局NY变量。
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忽略变量,无论其作用域如何。

    我知道的唯一方法是:

  • 不要创建全局变量
  • 不要对不同范围的变量使用相同的变量名


  • 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
    属性,因为该属性未定义<代码>参数
    是一个数组,因此您可以访问数组的所有属性。