canvas.width=canvas.width如何在内部工作

How does canvas.width=canvas.width work internally?

本文关键字:canvas width 在内部 工作      更新时间:2023-09-26

我知道下面的代码清除了画布

canvas.width = canvas.width

但这在内部是如何运作的呢?

赋值运算符只是给变量赋值,但上面的代码是如何清除画布的呢?

根据JavaScript规则。赋值运算符的作用只是为某个变量赋值。

但有没有什么方法可以通过给变量赋值来调用其他函数呢?

当您设置一个新值时,一些浏览器不会检查它是否与旧值相同,而是在内部重新分配一个新位图(因此进行清除)(高级语言可能会给人一种错觉,认为您可以动态更改位图大小,但事实并非如此。需要释放旧内存,然后重新分配新内存)。

右手边的参数被JavaScript引擎"翻译"为它所持有的值,因此它和其他值一样被传递。

但是,这不是清除画布的推荐方法。它现在可能在一些浏览器中工作,但在未来还不确定,因为这不是规范的一部分。