參考:https://www.cnblogs.com/qq254980080/p/11785677.html
https://blog.csdn.net/u014091101/article/details/88057449
https://blog.csdn.net/qq_39207948/article/details/80615108
我的情況:頁面中外引index.js,本地用ie8瀏覽器打開,控制台報錯:
index.js:
··· var token = sessionStorage.getItem('token'); ··· var indexLoad = { index: function () { ··· } } ···
html:
<html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=8"> <script src="js/index.js"></script> </head> <body> ··· </body> <script> $(document).ready(function () { indexLoad.index(); }); </script> </html>
剛開始以為是index.js沒有引入成功,就在index.js的第一行打印,控制台是有輸出的。排除引入失敗的原因,挨個打印,發現獲取token報錯后,js就沒有繼續往下執行了,所以才會報第二個錯。
總結:
報錯1原因 —— IE8-IE10中是需要服務器或者localhost,才能使用localStorage和sessionStorage
報錯2原因 —— js是‘單線程’語言,執行模式有兩種:同步,異步
單線程:只有一條流水線
同步:依次在流水線上執行
異步:流水線旁加了一個臨時儲物台(任務隊列),會把某些模塊拿到臨時儲物台,或者會把臨時儲物台的某些模塊插隊到流水線
js默認模式是同步模式,按流水線執行:A,B,C,不管A里邊代碼運行時間多長,都要先執行完A,再執行B,再執行C