最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript代碼調(diào)試方法實例小結(jié)

 更新時間:2019年01月05日 08:44:17   作者:deniro_li  
這篇文章主要介紹了JavaScript代碼調(diào)試方法,結(jié)合實例形式總結(jié)分析了JavaScript錯誤信息的處理與代碼調(diào)試相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了JavaScript代碼調(diào)試方法。分享給大家供大家參考,具體如下:

1 把消息記錄到控制臺

IE8、Firefox、Chrome 和 Safari 中可以使用 console 對象向 JavaScript 控制臺寫入消息,它有這些方法:

  • error(message):錯誤性消息。
  • info(message):信息性消息。
  • log(message):一般性消息。
  • warn(message):警告性消息。

Opera 10.5 之前的版本,是使用 opera.postError() 方法把消息寫入控制臺的。

可以使用下面的這個函數(shù)作為統(tǒng)一寫入控制臺的接口:

/**
 * 跨瀏覽器,向控制臺寫入消息
 * @param message
 */
function log(message) {
  if (typeof console == "object") {
    console.log(message);
  } else if (typeof opera == "object") {
    opera.postError(message);
  } else if (typeof java == "object" && typeof java.lang == "object") {
    java.lang.System.out.println(message);
  }
}

可以在瀏覽器中安全地使用這個函數(shù):

function sum(num1, num2) {
  log("Entering sum(), arguments are " + num1 + "," + num2);
  log("Before calculation");
  var result = num1 + num2;
  log("After calculation");
  log("Exiting sum()");
  return result;
}

注意:在發(fā)布之前,務(wù)必移除所有的消息。這可以在部署之前,通過編寫特定的代碼步驟,實現(xiàn)自動清理。不要使用 alert(),因為彈出的警告框會阻止程序的執(zhí)行;而且在測試異步操作對時間的影響時,使用警告框也會影響測試結(jié)果。

2 把消息記錄到當(dāng)前頁面

可以在頁面中開辟出一小塊區(qū)域,用于顯示消息:

function log(message) {
  var console = document.getElementById("debuginfo");
  if (console == null) {
    console = document.createElement("div");
    console.id = "debuginfo";
    console.style.background = "#dedede";
    console.style.border = "1px solid silver";
    console.style.padding = "5px";
    console.style.width = "400px";
    console.style.position = "absolute";
    console.style.right = "0px";
    console.style.top = "0px";
    document.body.appendChild(console);
  }
  console.innerHTML += "<p>" + message + "</p>";
}

這種技術(shù)在不支持 JavaScript 控制臺的 IE7 以及早期版本中,特別有用。

注意:在發(fā)布之前,也要移除把錯誤消息輸出到頁面中的代碼。

3 拋出錯誤

如果錯誤消息很具體,那么就可以直接把它當(dāng)做確定錯誤來源的依據(jù),比如下面的這個函數(shù):

function divide(num1, num2){
  return num1/num2;
}

這個函數(shù)如果其中的一個參數(shù)不是數(shù)值,那么就會返回 NaN。所以可以在計算前先進行檢測:

function divide(num1, num2){
  if(typeof num1 !="number" || typeof num2 !="number"){
    throw new Error("divide(): 兩個參數(shù)都必須是數(shù)值")
  }
  return num1/num2;
}

這個錯誤消息包含了函數(shù)的名稱以及導(dǎo)致錯誤的真正原因,所以如果拋出了這個錯誤,我們就能立即知道錯誤的來源以及問題的性質(zhì)。

大型的應(yīng)用程序,可以使用下面的這個 assert() 函數(shù)拋出自定義錯誤:

<script type="text/javascript">
  function assert(condition, message) {
    if (!condition) {
      throw new Error(message);
    }
  }
  function divide(num1, num2) {
    assert(typeof num1 == "number" && typeof num2 == "number", "divide():Both arguments must be numbers.");
    return num1 / num2;
  }
  divide(1,"tt");
</script>

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript傳值操作技巧總結(jié)》、《javascript編碼操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • 通過示例徹底搞懂js閉包

    通過示例徹底搞懂js閉包

    下面小編就為大家?guī)硪黄ㄟ^示例徹底搞懂js閉包。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • JS中Math對象使用示例(秒懂如何使用Math對象)

    JS中Math對象使用示例(秒懂如何使用Math對象)

    這篇文章主要給大家介紹了關(guān)于JS中Math對象使用的相關(guān)資料,Math和其他的對象不同,它不是一個構(gòu)造函數(shù),它屬于一個工具類,不用創(chuàng)建對象,它里面封裝了數(shù)學(xué)運算相關(guān)的屬性和方法,需要的朋友可以參考下
    2024-06-06
  • typescript 類型any不能分配給類型never

    typescript 類型any不能分配給類型never

    本文主要介紹了typescript 類型any不能分配給類型never,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 音樂播放用的的幾個函數(shù)

    音樂播放用的的幾個函數(shù)

    音樂播放用的的幾個函數(shù)...
    2006-09-09
  • Javascript毫秒數(shù)用法實例

    Javascript毫秒數(shù)用法實例

    這篇文章主要介紹了Javascript毫秒數(shù)用法,實例分析了javascript獲取毫秒數(shù)及設(shè)置指定時間毫秒數(shù)的方法,需要的朋友可以參考下
    2015-02-02
  • JS實現(xiàn)手寫parseInt的方法示例

    JS實現(xiàn)手寫parseInt的方法示例

    這篇文章主要給大家介紹了JS實現(xiàn)手寫parseInt的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • 再也不怕 JavaScript 報錯了,怎么看怎么處理都在這兒

    再也不怕 JavaScript 報錯了,怎么看怎么處理都在這兒

    這篇文章主要介紹了再也不怕 JavaScript 報錯了,怎么看怎么處理都在這兒,需要的朋友可以參考下
    2020-12-12
  • js 異步處理進度條

    js 異步處理進度條

    js 異步處理進度條的實現(xiàn)代碼,需要的朋友可以參考下。
    2010-04-04
  • 談?wù)勎覍avaScript中typeof和instanceof的深入理解

    談?wù)勎覍avaScript中typeof和instanceof的深入理解

    這次主要說說javascript的類型判斷函數(shù)typeof和判斷構(gòu)造函數(shù)原型instanceof的用法和注意的地方,對本文感興趣的朋友一起看看吧
    2015-12-12
  • 無閃爍更新網(wǎng)頁內(nèi)容JS實現(xiàn)

    無閃爍更新網(wǎng)頁內(nèi)容JS實現(xiàn)

    這篇文章主要介紹了無閃爍更新網(wǎng)頁內(nèi)容JS實現(xiàn),有需要的朋友可以參考一下
    2013-12-12

最新評論

偃师市| 鹿泉市| 甘洛县| 贵德县| 灵丘县| 竹北市| 临夏市| 沙坪坝区| 郓城县| 鄱阳县| 杨浦区| 东台市| 华安县| 高青县| 法库县| 阿坝县| 金坛市| 隆林| 灵台县| 濮阳市| 疏附县| 永嘉县| 彰化市| 浙江省| 尼勒克县| 沂南县| 科技| 灵川县| 镇安县| 阿瓦提县| 新泰市| 南木林县| 鸡东县| 仁怀市| 广汉市| 德保县| 远安县| 商城县| 太和县| 娄烦县| 阿坝|