【问题标题】:Javascript function should throw an error if called without arguments or an argument is undefined如果在没有参数的情况下调用 JavaScript 函数或未定义参数,则 Javascript 函数应引发错误
【发布时间】:2017-07-02 19:24:33
【问题描述】:

帮助!我在周二接受采访,包括在 testdome.com 上进行的一项测试……我查看了他们的一些“简单”javascript 练习题,但我被这道题难住了:

实现 ensure 函数,以便在不带参数调用或未定义参数时抛出错误。否则它应该返回给定的值。

function ensure(value) {

}

到目前为止,我有:

function ensure(value) {
  if(value){
    return true;
  }
}

但是如何检查函数是否被“无参数或未定义参数”调用?

我尝试了一些方法,例如:else if (typeof value === 'undefined'),但这似乎不起作用...

【问题讨论】:

  • if(value === undefined) throw new Error('message'); 涵盖了这两种情况。
  • typeof value === 'undefined' 应该可以完美运行。为什么你认为它没有?
  • 确保您照顾好“ ”。 if(typeof value === 'undefined') 或 if(value === undefined)。两者都会给出正确答案。
  • @Emissary 是对的。引用未提供的参数的变量的内容始终是未定义的。所以简单地使用严格相等而不在 undefined 中添加引号就可以了。

标签: javascript function error-handling arguments undefined


【解决方案1】:

您可以检查是否value === undefined,如果是则抛出错误。否则返回输入值。

function ensure(value) {
  if(value === undefined) {
    throw new Error('no arguments');
  }

  return value;
}

console.log(ensure('text'));
console.log(ensure([0,1,2,3]));
console.log(ensure());

【讨论】:

  • 那么,new Error 代码是内置的 javascript 方法吗?提前致谢。
  • @Gel 非常提前,但是是的,您正在创建内置 Error 类的新实例。
【解决方案2】:
 function noValueException(value) {
       this.value = value;
       this.name = 'noValueException';
    }

    function ensure(value) {
      if(value === undefined){
          throw new noValueException('No argument passed');       
      }else{ return value;}
    }

如果没有参数传递给函数,这将向控制台抛出异常

【讨论】:

  • @Emissary 抱歉,我认为这个问题只是因为没有传递任何价值。现在更正我的回答
猜你喜欢
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 2019-06-15
  • 2019-09-21
  • 2022-08-09
相关资源
最近更新 更多