我知道下面的代码清除了画布
canvas.width = canvas.width
但这在内部是如何运作的呢?
赋值运算符只是给变量赋值,但上面的代码是如何清除画布的呢?
根据JavaScript规则。赋值运算符的作用只是为某个变量赋值。
但有没有什么方法可以通过给变量赋值来调用其他函数呢?
当您设置一个新值时,一些浏览器不会检查它是否与旧值相同,而是在内部重新分配一个新位图(因此进行清除)(高级语言可能会给人一种错觉,认为您可以动态更改位图大小,但事实并非如此。需要释放旧内存,然后重新分配新内存)。
右手边的参数被JavaScript引擎"翻译"为它所持有的值,因此它和其他值一样被传递。
但是,这不是清除画布的推荐方法。它现在可能在一些浏览器中工作,但在未来还不确定,因为这不是规范的一部分。