javascript SyntaxError:标识符'img'已被声明

时间:2019-05-30 13:02:40

标签: javascript

我正在尝试使用以下代码从本地笔记本相机拍摄照片:

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之类,没有用)。任何想法如何解决它都将受到欢迎。谢谢。

3 个答案:

答案 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');`
 

将对其进行修复,因为它不再尝试重新声明该变量,现在它仅(潜在地)更改了其值。