Javascript中驗證輸入參數

來源:互聯網
上載者:User
javascript

Javascript的函式宣告中的參數列表並不意味著什麼……它們純粹是為了方便訪問這些參數而放在那裡的,而並沒有限制調用者怎麼傳參數,調用者想怎麼傳就怎麼傳,只要指令碼不出錯……

所有,有時候為了保證程式的健壯性,需要實現輸入參數的驗證和預設的輸入參數。這幾天學習的過程中恰好寫了一些簡單的解決方案,放在這裡做備份。

首先是驗證類型的合法性:


function validateType( obj, type) {
  if (!(obj instanceof type)) {
    throw new Error("Invalid type of the argument of " + arguments.callee.caller);
  }

  return true;
}


然後是驗證參數值合法:


function validateValue(obj, vfunc) {
  validateType(vfunc, Function);  // vfunc must be Function object
  if (!vfunc(obj)) {
    throw new Error("Invalid value of the argument of " + arguments.callee.caller);
  }
}


再是預設參數,如果參數是undefined(也就是沒有傳參數),那麼就使用指定的預設參數:


function setDefaultValue(param, defVal) {
  var undefined;
 
  if (undefined === param) {
    return defVal;
  } else {
    return param;
  }
}


OK,就這麼多了。以後還可以再加,需要什麼就做什麼吧~
它們的用法很簡單。例如函數add,假設傳入的必須是正數,而且b可以不傳,預設為10:


function add(a, b) {
  var adder = setDefaultValue(b, 10);

  validateType(a, Number);
  validateType(adder, Number);
  validateValue(a, function(n) {return n > 0 ? true: false;});
  validateValue(adder, function(n) {return n > 0 ? true: false;});

  return a + adder;
}


嗯,Javascript真的很有趣!



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.