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