var n = 1;  var m = n;  
function add_to_total(total, x) {     total = total + x;  
} add_to_total(n, m); document.write(n+" </br>");//输出 1 
document.write(m+" </br>");//输出 1 
if(m=2)alert(88) 

m 值到底是 1 还是 2 ?

解决方案 »

  1.   

    1if(m==2)alert(88) 
      

  2.   

    你的m只有一次赋值,var m=n,当然是1那
      

  3.   

    应该是if(m==2)if里m=2表示将2转换为bool为真,所以出来88
      

  4.   

    if(m=2)alert(88) //输出 88,说明 m 值为 2 ,如何解释?
      

  5.   


    m的值为2,你的if中,不是在判断m是否为2,而是在给m赋值,这个m=2赋值语句永远成立,所以,永远会弹出88.并且,m的值在这个if中也做了改变,变成了2!你如果想做判断,就用m==2 
      

  6.   

    if (n == 1) m = 2;  // n contains the same value as the literal 1; m is now 2 
    //n 值确实 为 1 ,给 m 重新赋值 2,m is now 2 。原来 m 值 为 1 。 
    //原来是这样理解的,以为 m 的值为 2 ,是函数执行后的结果。这样的理解是错误的。
      

  7.   

    已经 m=1 了,再 m=2 那就是给 m 重新赋值 。原来的理解是运行函数后,m 值成了 2 ,这是错误的理解