首页 新闻 会员 周边

请问js中用解构的方法交换值,为什么是undefine

0
悬赏园豆:5 [待解决问题]

var [x,y] = [1,2]
[x,y] = [y,x]
console.log(x=${x},y=${y})
就是这个代码,为什么返回x=undefined y=undefined

阿呆不是勺的主页 阿呆不是勺 | 初学一级 | 园豆:197
提问于:2023-04-27 11:39

我前面用一般赋值的方法,后面用解构的方法可以了,但是为什么呢?

阿呆不是勺 1年前
< >
分享
所有回答(2)
3

因为你没有打分号,语义变了

var [x,y] = [1,2];
[x,y] = [y,x]

根据 JavaScript 的自动分号插入规则,有些情况是不会自动插入分号的,比如用方括号开头,所以这个时候必须自己添加分号

by.Genesis | 园豆:2719 (老鸟四级) | 2023-04-27 12:11
支持(1) 反对(0) echo_lovely | 园豆:1437 (小虾三级) | 2023-04-27 14:00
0

这段代码应该是使用了解构赋值的语法,将数组中的值分别赋值给x和y,然后将x和y的值互换。正确的代码应该是这样的:

javascript

let [x,y] = [1,2];
[x,y] = [y,x];
console.log(x=${x}, y=${y});
代码运行结果为:x=2, y=1

如果你的代码中返回x=undefined y=undefined,有可能是因为console.log语句中的变量使用了错误的语法,导致了解析错误。请尝试修改console.log语句,将反引号(``)替换为单引号('')或双引号(""),看看是否可以正确输出结果。

Technologyforgood | 园豆:5686 (大侠五级) | 2023-04-30 21:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册