一、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