gpt4 book ai didi

javascript - es6解构(不确定是否与重组有关)

转载 作者:行者123 更新时间:2023-11-28 17:32:37 24 4
gpt4 key购买 nike

所以我正在按照本教程进行操作,但遇到了一个奇怪的错误。

let isDrawing = false
let lastX = 0
let lastY = 0

const draw = function(ev){
console.log('isDrawing', isDrawing)
if(!isDrawing){
return
}

ctx.beginPath()
ctx.moveTo(lastX, lastY)
ctx.lineTo(ev.offsetX, ev.offsetY)
ctx.stroke()

//[TODO] destruction doesn't work????
[lastX, lastY] = [ev.offsetX, ev.offsetY]
// lastX = ev.offsetX
// lastY = ev.offsetY
}

canvas.addEventListener('mousemove', draw)
canvas.addEventListener('mousedown', (ev) => {
isDrawing = true
[lastX, lastY] = [ev.offsetX, ev.offsetY]
})
canvas.addEventListener('mouseup', () => isDrawing = false)
canvas.addEventListener('mouseout', () => isDrawing = false)

在绘制函数的末尾,如果我使用破坏语法,则会收到错误:

script.js:26 Uncaught TypeError: Cannot set property '0' of undefined at HTMLCanvasElement.draw

奇怪的是,当我在 mousedown 事件监听器中使用相同的符号时,它工作没有问题。

我做错了什么?

最佳答案

您没有使用分号,并且以左括号开始一行,从而陷入了 ASI 陷阱。它被解析为

ctx.stroke()[(lastX, lastY)] = [ev.offsetX, ev.offsetY]

关于javascript - es6解构(不确定是否与重组有关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969070/

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