javascript - 為什么js代碼后面報(bào)錯(cuò),會(huì)導(dǎo)致前面的代碼執(zhí)行不了,我確定后面的部分和前面的部分沒(méi)有邏輯上的關(guān)聯(lián)。
問(wèn)題描述
最近在用野狗云實(shí)時(shí)通信引擎做一個(gè)todo應(yīng)用。大致就是,前面有一個(gè)函數(shù)在監(jiān)聽云端數(shù)據(jù)的變化,并將云端數(shù)據(jù)同步到本地。所以每次刷新瀏覽器,頁(yè)面上的數(shù)據(jù)都會(huì)正常顯示。
后面有一個(gè)實(shí)現(xiàn)刪除便簽功能的函數(shù),這兩個(gè)函數(shù)之間邏輯相互獨(dú)立,后面的函數(shù)對(duì)前面并不會(huì)造成影響。但是有一次刪除便簽功能的函數(shù)有一條語(yǔ)句出錯(cuò)了,再刷新頁(yè)面就無(wú)法正常顯示便簽了。不是說(shuō)js是一條一條執(zhí)行的嗎,為什么在我這個(gè)程序里會(huì)有這種情況發(fā)生。
var task_list = new Array();var i =0;//野狗云初始化var config = { syncURL: 'https://mytodo123.wilddogio.com' //輸入節(jié)點(diǎn) URL};wilddog.initializeApp(config);var ref = wilddog.sync().ref();//綁定鍵盤回車鍵$(document).keydown(function(event){ if(event.which == 13) {$('#btn1').click(); }});/*點(diǎn)擊submit時(shí),將數(shù)據(jù)先添加到野狗云*/$('#btn1').click(function(){ var content=$('#ipt1').val(); if(content != ''){ ref.child('note').push(content); $('#ipt1').val(''); }}); /*監(jiān)聽云端數(shù)據(jù)變化*/ ref.child('note').on('child_added',function(snapshot){var list = $(’#task-list’);content = snapshot.val();var textObj = ’<p class='task-item'><input type='checkbox' /><span class='ui-icon ui-icon-clock'></span><span class='task-content'>’+content+’</span><span class='task-detail'>detail</span></p>’;list.prepend(textObj); });//刪除便簽$('#btn2').click(function(){ $('input[type=’checkbox’]:checked').each(function(){var delObj = $(this).parents('p.task-item')delObj.remove(); });});
問(wèn)題解答
回答1:簡(jiǎn)單說(shuō),JS執(zhí)行前首先要對(duì)整個(gè)代碼塊(js文件或script標(biāo)簽)做語(yǔ)法分析(parsing),你這Uncaught SyntaxError: Unexpected token說(shuō)明連語(yǔ)法這步都過(guò)不了,整個(gè)代碼塊都不能執(zhí)行了。
你可以看這文章,改變不是說(shuō)js是一條一條執(zhí)行的嗎這種看法。
回答2:可以打斷點(diǎn)看看執(zhí)行順序
