You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:38:29