我正在尝试使用以下代码从本地笔记本相机拍摄照片:
function takePhoto(img)
{
const img = img || document.querySelector('img');
imageCapture.takePhoto()
.then(blob => {
let url = window.URL.createObjectURL(blob);
img.src = url;
window.URL.revokeObjectURL(url);
})
.catch(error);
};
takePhoto();
但出现以下错误:
SyntaxError: Identifier 'img' has already been declared
我检查了一下,上面的代码中没有img
的任何声明(也尝试将其重命名为image_local
之类,没有用)。任何想法如何解决它都将受到欢迎。谢谢。
答案 0 :(得分:6)
更改:
const img = img || document.querySelector('img');
收件人:
img = img || document.querySelector('img');
说明:
您的函数定义包括img
参数
function takePhoto(img)
这实际上是声明一个名为img
的变量,该变量将在函数内使用,并且在函数调用时传递了任何值。然后,您尝试将img
变量重新声明为函数内部的常量:
const img ...
您无法执行此操作,如收到的SyntaxError所述。
答案 1 :(得分:0)
您不能声明与现有变量同名的常量。在这种情况下,请在函数参数中输入img。称这两者为不同的事物之一。
答案 2 :(得分:0)
在您提到的问题中
“上面的代码中没有img的任何声明”
...实际上有两个声明(根据错误消息):
1)
功能takePhoto(img)
这有效地声明了该变量,因为它使用该名称将其带入了函数范围。
2)
const img
这里您尝试再次声明相同的变量。
最多只能有一个相同变量的声明。更改
const img = img || document.querySelector('img');
到
img = img || document.querySelector('img');`
将对其进行修复,因为它不再尝试重新声明该变量,现在它仅(潜在地)更改了其值。