亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

拋出預期錯誤:RangeError:數組長度無效

拋出預期錯誤:RangeError:數組長度無效

RISEBY 2021-11-12 15:00:43
我有一個簡單的階乘函數:function factorial(n){  let array = Array(n).fill(0).map((e, i) => i + 1)  if (array.length) return array.reduce((a, b) => a * b);  else {    return 1;  }}  但由于某些原因,這是扔Expected error was thrown: RangeError: Invalid array length在codewars。我試圖通過if-else塊解釋數組長度為 0 / 未定義。但是,我仍然收到錯誤消息。我不確定如何解釋無效范圍,坦率地說,不明白它指的是什么。我還嘗試在以下范圍內拋出“rangeError” try-catch:function factorial(n) {  try {    let array = Array(n)      .fill(0)      .map((e, i) => i + 1);    return array.reduce((a, b) => a * b);  } catch (error) {    if (error instanceof TypeError) {      throw new error();    } else if (error instanceof RangeError) {      throw new error();    } else {      throw error;    }  }}事實上,這造成了第二個錯誤: TypeError: error is not a constructor
查看完整描述

3 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

您需要RangeError按照以下指定的值將其扔到那里0 or greater than 12


function factorial(n) {

  if(n < 0 || n > 12){

    throw new RangeError('')

  }

  let array = Array(n).fill(0).map((e, i) => i + 1)

  if (array.length) return array.reduce((a, b) => a * b);

  else {

    return 1;

  }

}


查看完整回答
反對 回復 2021-11-12
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

如果給你一個負數,你試圖創建一個長度 < 0 的數組,這會導致你的錯誤。你需要處理負面

Array(Math.abs(n))

這將創建一個長度數組,無論它是正數還是負數。


查看完整回答
反對 回復 2021-11-12
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

問題的描述說你需要在n小于0和大于時拋出 RangeError 12。所以只需使用if之前的語句,你就會通過。


function factorial(n){

  if(n < 0 || n > 12){

    throw RangeError;

  }

  let array = Array(n).fill(0).map((e, i) => i + 1)

  if (array.length) return array.reduce((a, b) => a * b);

  else {

    return 1;

  }

}  


查看完整回答
反對 回復 2021-11-12
  • 3 回答
  • 0 關注
  • 544 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號