目前正在学习ES 6& 7,我写了一个函数混合数组,我想通过"翻译"这个功能到了6,它似乎不起作用,我没有发现我的错误,任何人都可以帮助我吗?
const arr = [1, 2, 3, 4, 5]
var mixer = array => {
for (let i = 0; i < array.length; i++) {
let randomized = Math.round(Math.random() * array.length)
[array[randomized], array[i]] = [array[i], array[randomized]]
}
return array
}
mixer(arr)
这是我从谷歌浏览器收到的错误
未捕获的ReferenceError:未定义randomized 在调音台(prog.js:6) 在prog.js:11
感谢您的帮助:)
答案 0 :(得分:1)
randomized is not defined
您忘记了行尾的;
undefined
值开始在数组末尾迭代
const arr = [1, 2, 3, 4, 5]
var mixer = array => {
for (let i = array.length; i; i--) {
let randomized = Math.floor(Math.random() * i);
[array[i - 1], array[randomized]] = [array[randomized], array[i - 1]];
}
return array;//here
}
console.log(mixer(arr))
&#13;
答案 1 :(得分:0)
TL; DR :每当您使用(
或[
开始一行时,请务必使用以下内容结束上一条指令如果可能的话,分号。
我只想补充Weedoze的回答
你实际上只需要他建议的第一个分号
这可能令人困惑,因为分号在99%的时间内都是可选的
如果您将代码放在一行中,它可以帮助您自己了解代码的样子。特别是当您使用(
或[
开始一行时。正如Bergi在评论中所建议的那样,还要注意以/
,+
,-
和`
开头的行。
例如,请使用以下代码:
test = 123
a = test
(b = 456)
会发出类似test is not a function
之类的错误。为什么?好吧,因为
a = test
(b = 456)
等于
a = test(b = 456)
如果你想写的话
test = 123
a = test;
(b = 456)
那么即使你把第2行和第3行放在同一行上,你的代码也会清晰并且仍然具有相同的含义:
a = test;(b = 456)