【问题标题】:Javascript: Determine if argument is passed to function [duplicate]Javascript:确定参数是否传递给函数[重复]
【发布时间】:2019-07-21 18:26:15
【问题描述】:

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

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

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

基本上我希望区分:

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

对比

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

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

这是JSFiddle,我试图查看上述两种情况之间是否有任何先前的建议不同 - 没有运气。

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

【问题讨论】:

  • arguments.length
  • 谢谢@trincot。

标签: javascript function parameters undefined


【解决方案1】:

您可以做的是用some 遍历arguments 并检查传递的任何值是否为假(undefinednullNaN0""false) :

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

【讨论】:

  • 谢谢 Jack - 我不知道 arguments 对象,这似乎是问题的症结所在。
  • 没问题@elPastor,如果我的回答解决了您的问题,请将其标记为已接受。
  • trincot 的评论是这样做的,但我感谢您的帮助。
猜你喜欢
  • 2012-11-13
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多