国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS中的一些坑(持續更新)

Lin_YT / 3266人閱讀

摘要:問題高級程序設計第版第頁部分寫到首先,任何涉及的操作例如,都會返回。這一點寫錯了,加性操作符就是個特例加性操作符中如果有一個操作數是字符串,即便有一個,也會將其轉為字符串進行拼接。而對于減性操作符,書中所寫是對的

1. 基本類型與引用類型

牛客網上的一個題:

var arr=[{a:1},{}];
arr.forEach(function(item,idx){
    item.b=idx;
});

執行完上面代碼后,arr 的值是?

覺得 forEach 方法中的 item 參數是按值傳遞,所以不會改變原來的 arr,答案為:[{a:1},{}] 。正確答案是:[{a:1, b:0},{b:1}] 。這里忽略了一個重要的點,即函數參數雖然是按值傳遞,不是按引用傳遞,但是基本類型和引用類型本身的差別被忽略了。

基本類型占用的內存空間不大,所以把變量 a 賦給 b,是把 a 的值拷貝一份給b,a、b 所在的內存空間是獨立的,所以修改 a 不會影響 b:

var a = 1;
var b = a;
a = 2;
a; // 2
b; // 1

但是引用類型就不一樣了,因為引用類型存儲的內容可能很多,比如將對象 a 賦值給對象 b,如果是簡單拷貝一遍內容,可能會帶來很大的內存開銷,所以這種情況,對象a 和 b 實際上指向同一個內存空間,賦值操作實際上是將 a 的內存地址復制一份給 b,所以 a 對象的屬性改變也會影響到 b 對象:

var obja = {
  a: 1,
  b: 2
}
var objb = obja
obja.a = 2;
obja; // {a:2, b:2}
objb; // {a:2, b:2}

那么就很好理解啦,forEach 中的參數 item 如果是一個引用類型,就要警惕啦,雖然是按值傳遞,但是傳遞的值是內存地址。

2. NaN問題

<>第29頁NaN部分寫到:

首先,任何涉及NaN的操作(例如 NaN/10),都會返回NaN。

這一點寫錯了,加性操作符就是個特例:

console.log(NaN + "A"); // "NaNA"
console.log(NaN + NaN); // NaN
console.log(NaN + 1); // NaN

加性操作符中如果有一個操作數是字符串,即便有一個NaN,也會將其轉為字符串進行拼接。

而對于減性操作符,書中所寫是對的:

console.log(NaN - "A"); // NaN
console.log(NaN - NaN); // NaN
console.log(NaN - 1); // NaN

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95941.html

相關文章

  • vue入筆記(持續更新

    摘要:如果我們能把不同路由對應的組件分割成不同的代碼塊,只在路由被訪問的時候才加載對應的組件,這樣就更加高效了。這樣會大大提高首屏顯示的速度,但是可能其他的頁面的速度就會降下來。 一、 代碼分割,讓頁面按需加載,加快首屏速率 vue.js構建單頁應用雖然能通過路由來實現多頁面效果,但是實際上打包后所有的代碼都只有一個入口文件app.bundle.js,當項目變得十分龐大的時候,app.bun...

    tanglijun 評論0 收藏0
  • 微信網頁開發調用微信jssdk接口遇到的以及最終解決方法 (持續更新

    摘要:在系統的手機中,其實微信點擊網頁的圖片會自動調用這個接口一次。然后在在下面進行微信的接口的調用判斷是還是終端終端更新這個好像微信自己修復了,現在無論還是,如果不調用這個方法,微信自己不會去調用了。 1.微信網頁開發調用jssdk時報permission denied 大致是兩個原因 (1)首先注冊時未將你所調用的接口名字添加至jsApiList (2)第二個就是你的這個公眾號沒有權限使...

    Little_XM 評論0 收藏0
  • web app遇到的一些及小技能(持續更新...)

    摘要:遇到的一些坑問題手機端事件會有大約的延遲原因手機端事件,因為在事件觸發之后,瀏覽器要判斷用戶是否會做出雙擊屏幕的操作,所以會等待來判斷,再做出是否觸發事件的處理,所以就會有的延遲解決方法使用事件來代替事件,如的事件和,還有我自己 遇到的一些坑 問題:手機端 click 事件會有大約 300ms 的延遲 原因:手機端事件 touchstart --> touchmove --...

    darry 評論0 收藏0
  • web app遇到的一些及小技能(持續更新...)

    摘要:遇到的一些坑問題手機端事件會有大約的延遲原因手機端事件,因為在事件觸發之后,瀏覽器要判斷用戶是否會做出雙擊屏幕的操作,所以會等待來判斷,再做出是否觸發事件的處理,所以就會有的延遲解決方法使用事件來代替事件,如的事件和,還有我自己 遇到的一些坑 問題:手機端 click 事件會有大約 300ms 的延遲 原因:手機端事件 touchstart --> touchmove --...

    zhiwei 評論0 收藏0

發表評論

0條評論

Lin_YT

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<