iT邦幫忙

0

[井底蛙的小天空] JavaScript 值的比较

參考文章: https://juejin.im/post/6846687584710557710

新看到的方法:Object.is(val1,val2);

ES6中用來判斷兩個值是否相同,
感覺可以用來做其他測試(數據指向 => 修正為 記憶體指向位址問題),以下~

在vue中很多東西都是透過綁定的方式,這樣存取也方便
不過像是遇到要重複使用到綁定的數據並改變時,就會出現...這種情況

    data() {
    return {
      obA: [0, 1, 2, 3, 4, 5],
      obB: []
    };
  },
  
   ...
   
    this.obB = this.obA;
    this.obB.push(999);

    //this.obA 也被改變了~
    console.log(this.obA) // [0, 1, 2, 3, 4, 5,999];
    console.log(this.obB) //[0, 1, 2, 3, 4, 5,999];
    
    console.log("判斷指向結果 = " + Object.is(this.obB, this.obA)) //true;   

對比

ES6擴充套件運算子實現陣列的深層拷貝

    this.obB = [...this.obA];
    this.obB.push(999);
    
    //this.obA 這次就不會被改變
    console.log(this.obA) // [0, 1, 2, 3, 4, 5];
    console.log(this.obB) //[0, 1, 2, 3, 4, 5,999];

    console.log("判斷指向結果 = " + Object.is(this.obB, this.obA)) //false;

實測Object.is() 好像除了值得比較,也可以做(數據指向 => 修正為 記憶體指向位址)判斷/images/emoticon/emoticon37.gif

如果內容有誤再提出修正指導~謝謝~/images/emoticon/emoticon41.gif


1 則留言

0
harutsuki
iT邦新手 5 級 ‧ 2020-08-06 17:59:45

確認兩邊的記憶體指向位址相不相同吧?

gior__ann iT邦新手 5 級 ‧ 2020-08-07 10:03:59 檢舉

/images/emoticon/emoticon37.gif

哈哈~謝謝 ~好像您這麼講才是對的
當時不知道該怎麼描述 哈哈 已修正

我要留言

立即登入留言