矛盾的变量值??

moliu 2009-10-29 08:55:02
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 ?
...全文
94 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
moliu 2009-10-29
  • 打赏
  • 举报
回复
已经 m=1 了,再 m=2 那就是给 m 重新赋值 。原来的理解是运行函数后,m 值成了 2 ,这是错误的理解
moliu 2009-10-29
  • 打赏
  • 举报
回复
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 ,是函数执行后的结果。这样的理解是错误的。
sohighthesky 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jol_boy 的回复:]
引用 5 楼 moliu 的回复:
m的值为2,你的if中,不是在判断m是否为2,而是在给m赋值,这个m=2赋值语句永远成立,所以,永远会弹出88.并且,m的值在这个if中也做了改变,变成了2!


[/Quote]
这句话有问题吧,是判断后面的2的值 不是m=2,你用m=0试试 就知道了
sumjor 2009-10-29
  • 打赏
  • 举报
回复
if(m==2)
jol_boy 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 moliu 的回复:]
if(m=2)alert(88) //输出 88,说明 m 值为 2 ,如何解释?
[/Quote]

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

你如果想做判断,就用m==2
moliu 2009-10-29
  • 打赏
  • 举报
回复
if(m=2)alert(88) //输出 88,说明 m 值为 2 ,如何解释?
sohighthesky 2009-10-29
  • 打赏
  • 举报
回复
应该是if(m==2)

if里m=2表示将2转换为bool为真,所以出来88
fengsky491 2009-10-29
  • 打赏
  • 举报
回复
你的m只有一次赋值,var m=n,当然是1那
natineprince 2009-10-29
  • 打赏
  • 举报
回复
1

if(m==2)alert(88)
fengsky491 2009-10-29
  • 打赏
  • 举报
回复
1

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧