web-dev-qa-db-ja.com

引数なしで呼び出された場合、または引数が未定義の場合、JavaScript関数はエラーをスローする必要があります

助けて!私は火曜日にtestdome.comでのテストを含めてインタビューを受けています...私は彼らの「簡単な」javascript練習問題のいくつかを見ました、そして私はこれに困惑しています:

引数なしで呼び出された場合、または引数が未定義の場合にエラーをスローするように、ensure関数を実装します。それ以外の場合は、指定された値を返します。

function ensure(value) {

}

これまでのところ、私は持っています:

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

しかし、関数が「引数なしで呼び出されているか、引数が未定義である」かどうかを確認するにはどうすればよいですか?

私はいくつかのことを試しました:else if(typeof value === 'undefined')、しかしそれはうまくいかないようです...

8
Andy

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());
10
Brett DeWoody
 function noValueException(value) {
       this.value = value;
       this.name = 'noValueException';
    }

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

関数に引数が渡されない場合、コンソールに例外がスローされます

2
praveen