gpt4 book ai didi

javascript - 奇怪的 javascript 行为(作业)

转载 作者:数据小太阳 更新时间:2023-10-29 06:06:45 25 4
gpt4 key购买 nike

交换两个数字

C++:

int a = 3;
int b = 5;
a^=b^=a^=b;
printf("%d, %d\n", a, b); //5, 3

PHP:

$a = 3; $b = 5;
$a^=$b^=$a^=$b;
echo "$a, $b\n"; //5, 3

Javascript:

> a=3;b=5;a^=b^=a^=b;[a,b]
[ 0, 3 ]

为什么?看起来所有变量在所有表达式执行之前都已初始化...

最佳答案

你在 JS 中的赋值等同于

a = a ^ (b = b ^ (a = a ^ b));

这是从左到右计算的,我们得到

3 ^ (5 ^ (3 ^ 5))

所以一个简单的解决办法就是写

a = (b ^= (a ^= b)) ^ a;

欢迎来到 JS 的世界 =)

关于javascript - 奇怪的 javascript 行为(作业),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22742942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com