Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误:';让';声明只能在块内声明_Javascript_Jquery_If Statement - Fatal编程技术网

Javascript 错误:';让';声明只能在块内声明

Javascript 错误:';让';声明只能在块内声明,javascript,jquery,if-statement,Javascript,Jquery,If Statement,在我的项目中,我有以下几行: if (text.length > 0) { let data = "Some value"; } 因为if中只有一条语句,所以我想删除括号({})。我的代码应该是这样的: if (text.length > 0) let data = "Some value"; 但是,我得到了以下错误: “let”声明只能在块内声明 如果没有括号,if中的每一条语句都可以正常工作。为什么会出现此错误?let声明的变量的作用域是定义它们的块,因此需要

在我的项目中,我有以下几行:

if (text.length > 0) {
    let data = "Some value";
}
因为
if
中只有一条语句,所以我想删除括号(
{}
)。我的代码应该是这样的:

if (text.length > 0)
    let data = "Some value";
但是,我得到了以下错误:

“let”声明只能在块内声明


如果没有括号,
if
中的每一条语句都可以正常工作。为什么会出现此错误?

let声明的变量的作用域是定义它们的块,因此需要括号来定义作用域。 您可以使用let建立仅作用于单个表达式的变量:

var a = 5;
let(a = 6) console.log(a); // 6
console.log(a); // 5

注意:let表达式和let块是非标准的let扩展,它们的支持已被放弃。

因为“let”声明只能在块内声明

事实上,这样的代码是无用的,因为
let
const
是块范围的

if (foo) {
   let bar = true;
}
bar // bar doesn't exist here;

因此,即使您的许可证合法,它也不会起作用-因此它是被禁止的。

您想在那里使用let的原因是什么?在这个if语句之外它将不可见。@Andrey,这个答案太技术化和神秘,如果有什么问题的话,应该标记为这个问题的副本。
let(a=6)console.log(a)
这不是有效的JavaScript语法。你的意思是它是非标准的,但它是有效的。请参阅以了解更多信息-此语法是建议使用的,但已从规范中删除。它在Firefox 44+中不再适用,并且从未在IE或ChromeI中使用过。我将对其进行编辑以注意到,在这种情况下,变量不会无用:
let server=app.listen(()=>console.log(server.address())
。是的,这是有效的(除非您尝试将其与一行
一起使用,如果
)。