今天在研究编程入门的一道经典问题:输入a,b两个变量,将两个变量的值互换后打印在屏幕上。
正常流程是定义第三个变量c,将其中一个变量的值存在里面,随后通过两个赋值操作完成,具体代码如下:
<script type="text/javascript">
var num1=window.prompt("pls enter ur first num");
var num2=window.prompt("pls enter ur secound num");
var num3=num2;
num2=num1;
num1=num3;
</script>
突然我想到,能否不定义第三个变量,仅用它们自己完成呢?
要完成这个操作,两个赋值就必须在同一时间完成,否则就会因为值被覆盖而失败。
于是我写出了如下代码:
<script type="text/javascript">
var num1=window.prompt("pls enter ur first num");
var num2=window.prompt("pls enter ur secound num");
num1=num2+(num2=num1)*0
</script>
从逻辑顺序上讲,括号内的num2应该先被赋值为num1,从而导致括号外num2值的改变,最终使得num1=(num2=num1)导致失败,但结果却成功了,请问这是为什么呢?