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