如何在JavaScript中实现4个变量A、B、C、D的循环赋值函数cycle()?
实现四变量循环赋值的cycle()函数
这个问题的关键是要避免赋值过程中原始值被覆盖——要是直接按B=A→C=B的顺序来,原来的B值会被覆盖,后续C就拿不到真正的原始B值了。我给你几个常见编程语言的实现方案,你可以按需选用:
方案一:利用语言的多变量赋值特性(推荐,简洁)
很多现代编程语言支持一次性解包赋值,这种方式不需要额外的临时变量,直接一行完成所有赋值:
Python实现
# 函数返回新值,不修改全局变量,更符合编程规范 def cycle(a, b, c, d): # 右边的都是变量的原始值,一次性赋值给左边 return d, a, b, c # 调用示例 a, b, c, d = 1, 2, 3, 4 a, b, c, d = cycle(a, b, c, d) print(a, b, c, d) # 输出: 4 1 2 3
JavaScript实现
function cycle(a, b, c, d) { return [d, a, b, c]; } // 调用示例 let [a, b, c, d] = [1, 2, 3, 4]; [a, b, c, d] = cycle(a, b, c, d); console.log(a, b, c, d); // 输出: 4 1 2 3
方案二:使用临时变量(兼容所有编程语言)
如果你的语言不支持多变量解包,或者更习惯传统写法,可以用一个临时变量保存其中一个原始值,再依次完成赋值:
C语言实现
#include <stdio.h> // 通过指针修改外部变量的值 void cycle(int *A, int *B, int *C, int *D) { int temp = *A; // 先保存原始A的值 *A = *D; // 把原始D的值赋给A *D = *C; // 把原始C的值赋给D *C = *B; // 把原始B的值赋给C *B = temp; // 把原始A的值赋给B } int main() { int a = 1, b = 2, c = 3, d = 4; cycle(&a, &b, &c, &d); printf("%d %d %d %d\n", a, b, c, d); // 输出: 4 1 2 3 return 0; }
Java实现
public class CycleExample { // Java是值传递,这里用返回数组的方式传递新值 public static int[] cycle(int a, int b, int c, int d) { return new int[]{d, a, b, c}; } public static void main(String[] args) { int[] nums = {1, 2, 3, 4}; nums = cycle(nums[0], nums[1], nums[2], nums[3]); for (int num : nums) { System.out.print(num + " "); // 输出: 4 1 2 3 } } }
注意:如果你的需求是直接修改全局变量(不推荐,会降低代码可维护性),可以在函数内部直接操作全局变量,但这种写法要谨慎使用。
内容的提问来源于stack exchange,提问作者Hammer
相关产品推荐
相关产品推荐

