首页 > 解决方案 > Javascript:确定参数是否传递给函数

问题描述

等待! 在您投反对票和/或将其标记为重复之前,请阅读:

关于确定参数(参数、变量等)是否传递给函数(包括thisthis ),我已经查看了很多关于 SO 的答案。

但是,一致的答案是以一种或另一种方式检查未定义的。但这不一定准确。如果传递的参数本身未定义怎么办?

基本上我希望区分:

var a = [1,2][2]  // where this will result in undefined
myFunction(a);

对比

myFunction();  // where no variable whatsoever is passsed.

答案可能很简单,这是不可能的,应该在发送函数之前捕获未定义的变量,但希望有另一种方法。

这是一个JSFiddle,我试图在上面的两个场景中查看之前的建议是否有所不同 - 没有运气。

如果这确实是一个重复的问题,请指出我正确的方向。

标签: javascriptfunctionparametersundefined

解决方案


您可以做的是遍历argumentssome检查传递的任何值是否是虚假的(、undefinednullNaN0):""false

function myFunction() {
    if (arguments.some(e => !e)) {
        console.log("Falsy value passed");
    } else {
        //Rest of function goes here
    }
}

推荐阅读