JavaScript代碼調(diào)試方法實(shí)例小結(jié)
本文實(shí)例講述了JavaScript代碼調(diào)試方法。分享給大家供大家參考,具體如下:
1 把消息記錄到控制臺(tái)
IE8、Firefox、Chrome 和 Safari 中可以使用 console 對(duì)象向 JavaScript 控制臺(tái)寫(xiě)入消息,它有這些方法:
- error(message):錯(cuò)誤性消息。
- info(message):信息性消息。
- log(message):一般性消息。
- warn(message):警告性消息。
Opera 10.5 之前的版本,是使用 opera.postError() 方法把消息寫(xiě)入控制臺(tái)的。
可以使用下面的這個(gè)函數(shù)作為統(tǒng)一寫(xiě)入控制臺(tái)的接口:
/**
* 跨瀏覽器,向控制臺(tái)寫(xiě)入消息
* @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);
}
}
可以在瀏覽器中安全地使用這個(gè)函數(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ù)必移除所有的消息。這可以在部署之前,通過(guò)編寫(xiě)特定的代碼步驟,實(shí)現(xiàn)自動(dòng)清理。不要使用 alert(),因?yàn)閺棾龅木婵驎?huì)阻止程序的執(zhí)行;而且在測(cè)試異步操作對(duì)時(shí)間的影響時(shí),使用警告框也會(huì)影響測(cè)試結(jié)果。
2 把消息記錄到當(dāng)前頁(yè)面
可以在頁(yè)面中開(kāi)辟出一小塊區(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 控制臺(tái)的 IE7 以及早期版本中,特別有用。
注意:在發(fā)布之前,也要移除把錯(cuò)誤消息輸出到頁(yè)面中的代碼。
3 拋出錯(cuò)誤
如果錯(cuò)誤消息很具體,那么就可以直接把它當(dāng)做確定錯(cuò)誤來(lái)源的依據(jù),比如下面的這個(gè)函數(shù):
function divide(num1, num2){
return num1/num2;
}
這個(gè)函數(shù)如果其中的一個(gè)參數(shù)不是數(shù)值,那么就會(huì)返回 NaN。所以可以在計(jì)算前先進(jìn)行檢測(cè):
function divide(num1, num2){
if(typeof num1 !="number" || typeof num2 !="number"){
throw new Error("divide(): 兩個(gè)參數(shù)都必須是數(shù)值")
}
return num1/num2;
}
這個(gè)錯(cuò)誤消息包含了函數(shù)的名稱(chēng)以及導(dǎo)致錯(cuò)誤的真正原因,所以如果拋出了這個(gè)錯(cuò)誤,我們就能立即知道錯(cuò)誤的來(lái)源以及問(wèn)題的性質(zhì)。
大型的應(yīng)用程序,可以使用下面的這個(gè) assert() 函數(shù)拋出自定義錯(cuò)誤:
<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)容感興趣的讀者可查看本站專(zhuān)題:《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript傳值操作技巧總結(jié)》、《javascript編碼操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- javascript代碼調(diào)試之console.log 用法圖文詳解
- js調(diào)試工具console.log()方法查看js代碼的執(zhí)行情況
- 調(diào)試Javascript代碼(瀏覽器F12及VS中debugger關(guān)鍵字)
- 在vs2010中調(diào)試javascript代碼方法
- 分享一個(gè)自定義的console類(lèi) 讓你不再糾結(jié)JS中的調(diào)試代碼的兼容
- 利用vscode調(diào)試編譯后的js代碼詳解
- 簡(jiǎn)單實(shí)用的js調(diào)試logger組件實(shí)現(xiàn)代碼
- 為調(diào)試JavaScript添加輸出窗口的代碼
相關(guān)文章
JS中Math對(duì)象使用示例(秒懂如何使用Math對(duì)象)
這篇文章主要給大家介紹了關(guān)于JS中Math對(duì)象使用的相關(guān)資料,Math和其他的對(duì)象不同,它不是一個(gè)構(gòu)造函數(shù),它屬于一個(gè)工具類(lèi),不用創(chuàng)建對(duì)象,它里面封裝了數(shù)學(xué)運(yùn)算相關(guān)的屬性和方法,需要的朋友可以參考下2024-06-06
typescript 類(lèi)型any不能分配給類(lèi)型never
本文主要介紹了typescript 類(lèi)型any不能分配給類(lèi)型never,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
JS實(shí)現(xiàn)手寫(xiě)parseInt的方法示例
這篇文章主要給大家介紹了JS實(shí)現(xiàn)手寫(xiě)parseInt的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
再也不怕 JavaScript 報(bào)錯(cuò)了,怎么看怎么處理都在這兒
這篇文章主要介紹了再也不怕 JavaScript 報(bào)錯(cuò)了,怎么看怎么處理都在這兒,需要的朋友可以參考下2020-12-12
談?wù)勎覍?duì)JavaScript中typeof和instanceof的深入理解
這次主要說(shuō)說(shuō)javascript的類(lèi)型判斷函數(shù)typeof和判斷構(gòu)造函數(shù)原型instanceof的用法和注意的地方,對(duì)本文感興趣的朋友一起看看吧2015-12-12
無(wú)閃爍更新網(wǎng)頁(yè)內(nèi)容JS實(shí)現(xiàn)
這篇文章主要介紹了無(wú)閃爍更新網(wǎng)頁(yè)內(nèi)容JS實(shí)現(xiàn),有需要的朋友可以參考一下2013-12-12

