js 細節

一、js中var a=s=1和var a=1,s=1的區別html

function fl() {
  var q = w = 1;  
}
function fl1() {
  var a = 1, s = 1;  
}

 看出問題所在了嗎?函數

 var q=w=1 中的s在函數執行後變成全局變量了spa

二、code

var a = {n:1}; 
var b = a;  
a.x = a = {n:2}; 
console.log(a.x);// --> undefined 
console.log(b.x);// --> {n: 2}

上面的代碼很簡單,但能作對的不多;htm

下面爲本人理解:說明: var a = {n: 1}; var b = a; 定義這裏的{n: 1}內存地址爲 A; b和a都指向地址A;blog

 一、在a.x = a = {n:2}代碼中因爲「.」的運算符是最早計算的,因此會出現a.x=undefined;這時地址A的值爲{n: 1,x:undefined};內存

 二、再運算符相同從右到左開始算起, a = {n: 2};此時a的地址改變了,值爲 {n:2};get

 三、執行 a.x = a;這是最關鍵的點 ,由於a.x已經執行了表明地址A的一個x值,這裏能夠把a.x直接作爲地址A中的x指向位置,因此這裏變爲地址A {n: 1,x: {n: 2}};但b又指向地址A,因此b.x值爲{n:2}io

可查看此處: http://www.javashuo.com/article/p-ulhelelo-ez.html 更好理解console

相關文章
相關標籤/搜索