摘要:?jiǎn)栴}高級(jí)程序設(shè)計(jì)第版第頁部分寫到首先,任何涉及的操作例如,都會(huì)返回。這一點(diǎn)寫錯(cuò)了,加性操作符就是個(gè)特例加性操作符中如果有一個(gè)操作數(shù)是字符串,即便有一個(gè),也會(huì)將其轉(zhuǎn)為字符串進(jìn)行拼接。而對(duì)于減性操作符,書中所寫是對(duì)的
1. 基本類型與引用類型
??途W(wǎng)上的一個(gè)題:
var arr=[{a:1},{}]; arr.forEach(function(item,idx){ item.b=idx; });
執(zhí)行完上面代碼后,arr 的值是?
覺得 forEach 方法中的 item 參數(shù)是按值傳遞,所以不會(huì)改變?cè)瓉淼?arr,答案為:[{a:1},{}] 。正確答案是:[{a:1, b:0},{b:1}] 。這里忽略了一個(gè)重要的點(diǎn),即函數(shù)參數(shù)雖然是按值傳遞,不是按引用傳遞,但是基本類型和引用類型本身的差別被忽略了。
基本類型占用的內(nèi)存空間不大,所以把變量 a 賦給 b,是把 a 的值拷貝一份給b,a、b 所在的內(nèi)存空間是獨(dú)立的,所以修改 a 不會(huì)影響 b:
var a = 1; var b = a; a = 2; a; // 2 b; // 1
但是引用類型就不一樣了,因?yàn)橐妙愋痛鎯?chǔ)的內(nèi)容可能很多,比如將對(duì)象 a 賦值給對(duì)象 b,如果是簡(jiǎn)單拷貝一遍內(nèi)容,可能會(huì)帶來很大的內(nèi)存開銷,所以這種情況,對(duì)象a 和 b 實(shí)際上指向同一個(gè)內(nèi)存空間,賦值操作實(shí)際上是將 a 的內(nèi)存地址復(fù)制一份給 b,所以 a 對(duì)象的屬性改變也會(huì)影響到 b 對(duì)象:
var obja = { a: 1, b: 2 } var objb = obja obja.a = 2; obja; // {a:2, b:2} objb; // {a:2, b:2}
那么就很好理解啦,forEach 中的參數(shù) item 如果是一個(gè)引用類型,就要警惕啦,雖然是按值傳遞,但是傳遞的值是內(nèi)存地址。
2. NaN問題<
首先,任何涉及NaN的操作(例如 NaN/10),都會(huì)返回NaN。
這一點(diǎn)寫錯(cuò)了,加性操作符就是個(gè)特例:
console.log(NaN + "A"); // "NaNA" console.log(NaN + NaN); // NaN console.log(NaN + 1); // NaN
加性操作符中如果有一個(gè)操作數(shù)是字符串,即便有一個(gè)NaN,也會(huì)將其轉(zhuǎn)為字符串進(jìn)行拼接。
而對(duì)于減性操作符,書中所寫是對(duì)的:
console.log(NaN - "A"); // NaN console.log(NaN - NaN); // NaN console.log(NaN - 1); // NaN
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95941.html
摘要:如果我們能把不同路由對(duì)應(yīng)的組件分割成不同的代碼塊,只在路由被訪問的時(shí)候才加載對(duì)應(yīng)的組件,這樣就更加高效了。這樣會(huì)大大提高首屏顯示的速度,但是可能其他的頁面的速度就會(huì)降下來。 一、 代碼分割,讓頁面按需加載,加快首屏速率 vue.js構(gòu)建單頁應(yīng)用雖然能通過路由來實(shí)現(xiàn)多頁面效果,但是實(shí)際上打包后所有的代碼都只有一個(gè)入口文件app.bundle.js,當(dāng)項(xiàng)目變得十分龐大的時(shí)候,app.bun...
摘要:在系統(tǒng)的手機(jī)中,其實(shí)微信點(diǎn)擊網(wǎng)頁的圖片會(huì)自動(dòng)調(diào)用這個(gè)接口一次。然后在在下面進(jìn)行微信的接口的調(diào)用判斷是還是終端終端更新這個(gè)好像微信自己修復(fù)了,現(xiàn)在無論還是,如果不調(diào)用這個(gè)方法,微信自己不會(huì)去調(diào)用了。 1.微信網(wǎng)頁開發(fā)調(diào)用jssdk時(shí)報(bào)permission denied 大致是兩個(gè)原因 (1)首先注冊(cè)時(shí)未將你所調(diào)用的接口名字添加至jsApiList (2)第二個(gè)就是你的這個(gè)公眾號(hào)沒有權(quán)限使...
摘要:遇到的一些坑問題手機(jī)端事件會(huì)有大約的延遲原因手機(jī)端事件,因?yàn)樵谑录|發(fā)之后,瀏覽器要判斷用戶是否會(huì)做出雙擊屏幕的操作,所以會(huì)等待來判斷,再做出是否觸發(fā)事件的處理,所以就會(huì)有的延遲解決方法使用事件來代替事件,如的事件和,還有我自己 遇到的一些坑 問題:手機(jī)端 click 事件會(huì)有大約 300ms 的延遲 原因:手機(jī)端事件 touchstart --> touchmove --...
摘要:遇到的一些坑問題手機(jī)端事件會(huì)有大約的延遲原因手機(jī)端事件,因?yàn)樵谑录|發(fā)之后,瀏覽器要判斷用戶是否會(huì)做出雙擊屏幕的操作,所以會(huì)等待來判斷,再做出是否觸發(fā)事件的處理,所以就會(huì)有的延遲解決方法使用事件來代替事件,如的事件和,還有我自己 遇到的一些坑 問題:手機(jī)端 click 事件會(huì)有大約 300ms 的延遲 原因:手機(jī)端事件 touchstart --> touchmove --...
閱讀 1391·2023-04-25 16:45
閱讀 1929·2021-11-17 09:33
閱讀 2321·2021-09-27 14:04
閱讀 922·2019-08-30 15:44
閱讀 2642·2019-08-30 14:24
閱讀 3425·2019-08-30 13:59
閱讀 1699·2019-08-29 17:00
閱讀 899·2019-08-29 15:33