摘要:一錯(cuò)誤與異常概述錯(cuò)誤,指程序中的非正常運(yùn)行狀態(tài),在其它語(yǔ)言中稱為異常或錯(cuò)誤將每個(gè)錯(cuò)誤中創(chuàng)建個(gè)對(duì)象,描述包含的錯(cuò)誤信息通過(guò)使用提供異常的處理語(yǔ)句,可以用結(jié)構(gòu)化方式捕捉發(fā)生錯(cuò)誤,異常處理代碼與核心代碼實(shí)現(xiàn)分離語(yǔ)句語(yǔ)句是指中處理異常一種標(biāo)準(zhǔn)方式,
JS(JavaScript)
一.錯(cuò)誤與異常
1.概述
錯(cuò)誤,指程序中的非正常運(yùn)行狀態(tài),在其它語(yǔ)言中稱為異?;蝈e(cuò)誤將每個(gè)錯(cuò)誤中創(chuàng)建個(gè)Error對(duì)象,描述包含的錯(cuò)誤信息
通過(guò)使用JavaScript提供異常的處理語(yǔ)句,可以用結(jié)構(gòu)化方式捕捉發(fā)生錯(cuò)誤,異常處理代碼與核心代碼實(shí)現(xiàn)分離
2.try...catch語(yǔ)句
try...catch語(yǔ)句
是指JavaScript中處理異常一種標(biāo)準(zhǔn)方式,try語(yǔ)句是為嘗試,如出現(xiàn)錯(cuò)誤,則以catch語(yǔ)句進(jìn)行捕獲
try{ //用于捕獲指定語(yǔ)句中錯(cuò)誤與異常 console.log(v); // 調(diào)用未定義變量-語(yǔ)法報(bào)錯(cuò) } catch(error) { //e-表示try語(yǔ)句中出現(xiàn)錯(cuò)誤信息 console.log(error); } finally { console.log(error); }
3.錯(cuò)誤類型
throw語(yǔ)句
用來(lái)拋出一個(gè)用戶自定義的異常,throw后的語(yǔ)句將不會(huì)被執(zhí)行,且控制被傳遞到調(diào)用第一個(gè)catch塊,如沒(méi)有catch塊,將終止程序
function fn(v) { if (v) { } else { throw { name : "犬夜叉"}; } } // console.log(fn(10));//10 // console.log(fn()); var result; try { result = fn(); } catch (e) { result = "unkown"; console.log(e.name); } console.log(result);
二.this關(guān)鍵字
1.概述
定義個(gè)函數(shù)并一定要返回個(gè)對(duì)象,通過(guò)調(diào)用定義對(duì)象的位置
this基本用法
//定義一個(gè)全局變量 var v = 100; //this經(jīng)常定義在函數(shù)的作用域中 function fn() { //this總是要返回一個(gè)對(duì)象 console.log(this.v); // this指向哪個(gè)對(duì)象不取決于函數(shù)定義位置 } //this指向哪個(gè)對(duì)象,取決于調(diào)用的位置 //fn();//函數(shù)的調(diào)用 // 定義個(gè)對(duì)象,將fn函數(shù)作為obj對(duì)象的方法 var obj = { v : 200, f : fn } console.log(this.v);
2.綁定規(guī)則
隱式綁定丟失
是指被隱式綁定函數(shù)丟失綁定對(duì)象,則為默認(rèn)綁定,從而把this綁定到全局對(duì)象
var v = 100; //定義哥全局變量 function fn() { //定義個(gè)函數(shù) console.log(this.v); } var obj = { v : 200, f : fn //對(duì)象的f()方法指向fn()函數(shù) } //定義個(gè)全局變量,并被賦值為對(duì)象obj的f()方法 var fun = obj.f; //將fun作為個(gè)函數(shù)進(jìn)行調(diào)用 fun();
顯式綁定
明確在調(diào)用時(shí),this綁定對(duì)象,JS提供這apply()和call()兩個(gè)方法實(shí)現(xiàn),第一個(gè)參數(shù)接收是個(gè)對(duì)象,把這對(duì)象綁定this,接著調(diào)用函數(shù)是這個(gè)this
var v = 100; //定義哥全局變量 function fn() { //定義個(gè)函數(shù) console.log(this.v); } var obj = { v : 200, f : fn //對(duì)象的f()方法指向fn()函數(shù) } //定義個(gè)全局變量,并被賦值為對(duì)象obj的f()方法 var fun = obj.f; //將fun作為個(gè)函數(shù)進(jìn)行調(diào)用 fun.apply(obj);
new綁定
在JS中構(gòu)造函數(shù)使用new操作符調(diào)用函數(shù),內(nèi)置包括對(duì)象函數(shù)所有函數(shù)都可以調(diào)用函數(shù)
1新創(chuàng)建個(gè)全新對(duì)象
2新對(duì)象綁定到函數(shù)調(diào)用this
3該函數(shù)如沒(méi)有返回其它對(duì)象,則new表達(dá)式的函數(shù)會(huì)返回到新的對(duì)象
function Hero(name) { this.name = name; } var hero1 = new Hero("犬夜叉"); var hero2 = new Hero("戈薇");
3.綁定例外
被忽略的this
null和undefined綁定在this對(duì)象,以call,apply或bind調(diào)用會(huì)被忽略
function fn(){ //定義個(gè)函數(shù) console.log(this.v); } var v = 100; //定個(gè)全局變量 fn.call(null);//undefined //用call來(lái)調(diào)用函數(shù) var result = Math.max.apply(null, [1,2,3,4,5,2,3]); console.log(result);
間接引用
有意無(wú)意的創(chuàng)建個(gè)函數(shù),并調(diào)用這個(gè)函數(shù)為默認(rèn)綁定
function foo() { console.log( this.a ); } var a = 2; var o = { a: 3, foo: foo }; o.foo(); // 3 var p = { a: 4 }; // p.foo = o.foo; // p.foo();// 4 (p.foo = o.foo)(); // 2
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96937.html
摘要:汪汪汪哈士奇大黃狗輸出結(jié)果為這樣寫(xiě)依然存在問(wèn)題全局變量增多,會(huì)增加引入框架命名沖突的風(fēng)險(xiǎn)代碼結(jié)構(gòu)混亂,會(huì)變得難以維護(hù)想要解決上面的問(wèn)題就需要用到構(gòu)造函數(shù)的原型概念 showImg(https://segmentfault.com/img/remote/1460000017534338?w=1440&h=900); JS高級(jí) 前言 經(jīng)過(guò)前面幾篇文章的學(xué)習(xí),相信大家已經(jīng)對(duì)js有了大部分的理...
摘要:一嚴(yán)格模式概述嚴(yán)格模式是什么在中是種限制性更強(qiáng)變種方式,不是個(gè)子集,在語(yǔ)義上與正常代碼有明顯得差異嚴(yán)格模式和非嚴(yán)格模式可共存,可選擇性的加入嚴(yán)格模式嚴(yán)格模式的目的將把陷阱直接變?yōu)槊黠@錯(cuò)誤修正一些引擎難以優(yōu)化錯(cuò)誤,代碼有些時(shí)候嚴(yán)格模式會(huì)比非嚴(yán) JS(JavaScript)一.嚴(yán)格模式1.概述 嚴(yán)格模式是什么 在JS中是種限制性更強(qiáng)變種方式,不是個(gè)子集,在語(yǔ)義上與正常代碼有明顯得差異嚴(yán)格模...
摘要:錯(cuò)誤與異常描述表示代碼在運(yùn)行時(shí)出現(xiàn)的不正常顯示解釋器會(huì)對(duì)每個(gè)錯(cuò)誤創(chuàng)建一個(gè)對(duì)象對(duì)象中包含了錯(cuò)誤的具體描述信息語(yǔ)句用于捕獲和處理代碼中的錯(cuò)誤語(yǔ)句表示用于捕獲語(yǔ)句的錯(cuò)誤語(yǔ)句表示用于處理語(yǔ)句中的錯(cuò)誤語(yǔ)句語(yǔ)句表示終結(jié)塊當(dāng)語(yǔ)句無(wú)法處理錯(cuò)誤時(shí),會(huì)執(zhí)行語(yǔ)句 錯(cuò)誤與異常 描述 表示JavaScript代碼在運(yùn)行時(shí)出現(xiàn)的不正常顯示 解釋器會(huì)對(duì)每個(gè)錯(cuò)誤創(chuàng)建一個(gè)Error對(duì)象 Error對(duì)象中包含了錯(cuò)誤的...
摘要:嚴(yán)格模式描述嚴(yán)格模式可以分別作用在全局作用域中和函數(shù)作用域中嚴(yán)格模式是對(duì)代碼的一種限制方式嚴(yán)格模式可以將不明確顯示的錯(cuò)誤轉(zhuǎn)變成明確顯示嚴(yán)格模式可以修正一些解釋器難以優(yōu)化的錯(cuò)誤嚴(yán)格模式下的變量禁止意外創(chuàng)建變量沒(méi)有開(kāi)啟嚴(yán)格模式時(shí)在調(diào)用該變量時(shí), 嚴(yán)格模式 描述 嚴(yán)格模式可以分別作用在全局作用域中和函數(shù)作用域中 嚴(yán)格模式是對(duì)JavaScript代碼的一種限制方式 嚴(yán)格模式可以將不明確顯...
摘要:函數(shù)式編程最后介紹一下函數(shù)式編程。函數(shù)式編程是一種歷史悠久,而又在最近頗為熱門(mén)的話題。函數(shù)式編程在面向?qū)ο笠辉~誕生以前就已經(jīng)存在,不過(guò)它在很長(zhǎng)一段時(shí)間里都被隱藏于過(guò)程式編程面向?qū)ο笠彩沁^(guò)程式編程的一種的概念之下。 2.1 JavaScript特點(diǎn) 總結(jié)以下幾個(gè)特點(diǎn): 解釋型語(yǔ)言 類似與C和Java的語(yǔ)法結(jié)構(gòu) 動(dòng)態(tài)語(yǔ)言 基于原型的面向?qū)ο?字面量的表現(xiàn)能力 函數(shù)式編程 解釋型語(yǔ)言:...
閱讀 3695·2021-11-23 09:51
閱讀 1053·2021-11-19 11:30
閱讀 3379·2019-08-29 14:16
閱讀 3386·2019-08-29 12:12
閱讀 2381·2019-08-26 13:40
閱讀 3497·2019-08-26 12:21
閱讀 3087·2019-08-26 11:55
閱讀 2234·2019-08-26 11:35