摘要:總結(jié)記錄常見的五種類型報錯語法解析錯誤變量未定義變量類型錯誤數(shù)組越界相關(guān)函數(shù)參數(shù)錯誤能防止報錯導(dǎo)致后面代碼不能執(zhí)行問題的未定義不影響后面函數(shù)的執(zhí)行注意點(diǎn)在報錯前,不執(zhí)行里的內(nèi)容不報錯也不執(zhí)行在報錯后,的內(nèi)容不會被執(zhí)行執(zhí)行完結(jié)束,如果有
總結(jié)記錄 try-catch-finally
常見的五種類型報錯
SyntaxError語法解析錯誤
ReferenceError變量未定義
TypeError變量類型錯誤
RangeError數(shù)組越界
URIErrorURI相關(guān)函數(shù)參數(shù)錯誤
try-catch能防止報錯導(dǎo)致后面代碼不能執(zhí)行問題
try { a //a的未定義不影響后面函數(shù)的執(zhí)行 } catch (e) { console.log(e); } (function f() {})()
注意點(diǎn)
在報錯前return,不執(zhí)行catch里的內(nèi)容,不報錯也不執(zhí)行
function f() { try { return "123"; a; } catch(e) { console.log(e); } } console.log(f()); //123
function f() { try { var a; } catch(e) { console.log(e); } } console.log(f()); //undefined
return在報錯后,return的內(nèi)容不會被執(zhí)行,執(zhí)行完catch結(jié)束,如果有finally語句就再執(zhí)行finally然后結(jié)束
function f() { try { a; return 123; } catch(e) { console.log(e); } finally { console.log("執(zhí)行finally"); } } console.log(f()); //ReferenceError 執(zhí)行finally undefined //之所以是undefined不是123是因為先報錯執(zhí)行catch了
finally不管是否報錯以及是否return,都會執(zhí)行,
對于try中在沒有報錯下return的內(nèi)容會先保存不輸出,先進(jìn)行finally內(nèi)容執(zhí)行
var count = 0; function f() { try { return count; } catch(e) { console.log(e); } finally { count ++; console.log(count); } } console.log(f()); //1 0 說明return count 時count的值先被記錄了只是未返回
總結(jié):先報錯:先執(zhí)行catch,再finally;遇到return:先保留其值,再在執(zhí)行finally,最后return結(jié)果,return可以覆蓋在finally中遇到return就直接返回結(jié)果了
變量提升只有變量申明和函數(shù)申明才會提升
if(0) {function a() {}} 不建議內(nèi)部申明函數(shù),變量提升時a是undefined
預(yù)編譯步驟:
創(chuàng)建go對象,所有全局的申明都被提升,函數(shù)申明優(yōu)先于變量申明(同名時函數(shù)覆蓋變量),結(jié)果函數(shù)預(yù)編譯成函數(shù),變量為undefined
//console.log(f); //? f() {} var f; //console.log(o); //undefined var o; function f() {}; //console.log(g) //ReferenceError: g is not defined 這是表達(dá)式,不被提升 (function g() {}); //console.log(d) //ReferenceError: d is not defined 這是表達(dá)式,不被提升 (function d() {})(); //console.log(y) //undefined y是變量申明 當(dāng)然t也是報錯,t is not defined var y = function t() {}; //console.log(c) //ReferenceError: c is not defined 這是表達(dá)式,不被提升 c = 1; //console.log(h) //ReferenceError: h is not defined 這是表達(dá)式,不被提升 console.log(k); //undefined if (function h() {}) { var k; }
函數(shù)執(zhí)行時創(chuàng)建ao對象
創(chuàng)建this以及arguments對象
找形參和變量申明 ,將變量和形參名作為ao對象屬性名,值為undefined
將實參值和形參統(tǒng)一
找函數(shù)聲明,將函數(shù)名作為ao對象的屬性名值為函數(shù)體
a = 100; function d(e) { function e() {}; arguments[0] = 2; console.log(e); //2 console.log(c); //un console.log(b); //un if(1) { var b = 123; function c () { } } var c; a = 10; var a; console.log(b); //123 f = 123; console.log(c); //function c() {} console.log(a); //10 } var a; d(1); console.log(a); //100 console.log(f); //123
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/98230.html
摘要:正則表達(dá)式如何創(chuàng)建正則表達(dá)式字面量創(chuàng)建通過構(gòu)造函數(shù)正則表達(dá)式實例屬性及方法三個修飾符屬性,只讀不可修改正則表達(dá)式是否添加了忽略大小寫的修飾符,返回一個布爾值正則表達(dá)式是否添加了全局匹配的修飾符,返回一個布爾值正則表達(dá)式是否添加了換行的修飾符 正則表達(dá)式 如何創(chuàng)建正則表達(dá)式 字面量創(chuàng)建var r = /a/; 通過構(gòu)造函數(shù)var r = new RegExp(a); 正則表達(dá)式實...
摘要:快速排序看名字知特點(diǎn)就是快效率高它是處理大數(shù)據(jù)最快的排序算法之一奇妙的記憶點(diǎn)內(nèi)排序不穩(wěn)定基本思想通過一趟排序把待排序記錄分為獨(dú)立的兩部分其中一部分記錄的關(guān)鍵字都比另一部分的關(guān)鍵字笑則分別對兩部分繼續(xù)進(jìn)行排序以達(dá)到整個序列有序自己的理解其實就 快速排序(Quick Sort) 看名字知特點(diǎn),就是快,效率高.它是處理大數(shù)據(jù)最快的排序算法之一.奇妙的記憶點(diǎn): 內(nèi)排序 不穩(wěn)定 基本思想 通...
摘要:原始類型的值只有四種字符串?dāng)?shù)值必須以十進(jìn)制表示布爾值和不能使用和。字符串必須使用雙引號表示,不能使用單引號。數(shù)組或?qū)ο笞詈笠粋€成員的后面,不能加逗號。 JSON對象 補(bǔ)充記錄一下,有些方法很需要熟練記憶的 JSON對象的規(guī)定 JSON對象對值有嚴(yán)格的規(guī)定 復(fù)合類型的值只能是數(shù)組或?qū)ο螅荒苁呛瘮?shù)、正則表達(dá)式對象、日期對象。原始類型的值只有四種:字符串、數(shù)值(必須以十進(jìn)制表示)、布爾值和...
摘要:奇妙的記憶點(diǎn)不穩(wěn)定內(nèi)排序基本思想分為兩步建堆與維持堆的性質(zhì)首先我們要先理解堆是什么東西堆其實就是一個完全二叉樹我們可以使用順序表存儲一個二叉樹如下圖所示來存儲其中分為最大堆最小堆而最大堆就是上頭大下頭小最小堆則反之明白了堆的定義我們就可以開 奇妙的記憶點(diǎn): 不穩(wěn)定 內(nèi)排序 基本思想: 分為兩步,建堆與維持堆的性質(zhì),首先我們要先理解堆是什么東西.堆其實就是一個完全二叉樹,我們可以使用...
摘要:原型要掌握這三者之間的關(guān)系,通過代碼例子記錄一下自身屬性的這里就是通過代碼看一下做了什么默認(rèn)情況下,將的所有屬性包括繼承的賦值給有什么東西呢自己的原型鏈,添加一個屬性,用來指明對象的誰構(gòu)造的自身全部屬性,這邊構(gòu)建一個空對象原型,所以沒有自有 原型 要掌握這三者之間的關(guān)系prototype,constructor,__proto__通過代碼例子記錄一下 function F() { ...
閱讀 2978·2021-11-11 16:55
閱讀 1007·2021-09-28 09:36
閱讀 3866·2021-09-22 15:22
閱讀 2309·2021-09-06 15:12
閱讀 1835·2021-08-19 10:55
閱讀 2935·2019-08-30 12:52
閱讀 562·2019-08-29 14:03
閱讀 1277·2019-08-29 12:27