为什么var关键字在这里使用?



在下面的函数中,我们将数据url转换为blob。

实际上我正在写一个组件,可以裁剪图像…如果我使用const,屏幕就会死机。什么也没发生……只有在使用var之后,它似乎才工作。

const dataURLtoBlob = (dataurl) => {
var arr = dataurl.split(",");
var mime = arr[0].match(/:(.*?);/)[1];
var bstr = atob(arr[1]);
var n = bstr.length;
var u8arr = new Uint8Array(n);
n--;
while (n) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });
};

为什么这里使用var?是因为var可以重新分配和修改吗?

在javascript中有3种声明变量的方法,var, let, const。

var是全局作用域,这意味着如果你在函数内部声明它,它可以在整个函数中读取,所以即使你在while内声明了一个变量,你也可以在while外读取它。

let是块作用域,这意味着它只能从声明它的块中读取。因此,如果你在while语句中声明了一个变量,你只能在while语句块中读取它。

const和let很像但是不能重赋值

在你的例子中,所有变量都在同一个块中声明,并且永远不会被重新赋值,所以let、var和const的工作方式是相同的。声明它们的最正确的方法是const,因为它们永远不会被重新赋值,但所有方法都可以。

更多信息:https://www.geeksforgeeks.org/difference-between-var-let-and-const-keywords-in-javascript/

最新更新