Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 - Fatal编程技术网

Javascript 词法范围是否只能在花括号之间创建?

Javascript 词法范围是否只能在花括号之间创建?,javascript,Javascript,是否有不需要大括号的情况,以便创建一个可以声明局部变量的新范围?不管我怎么想,它确实有大括号:例如块、条件、循环、尝试/捕获等。例如,没有块体的箭头函数似乎不会创建新的作用域。Aforloop withlet创建一个作用域: let x = "hello world"; for (let x = 0; x < 10; x++) console.log(x); // numbers ... console.log(x); // "hello world" 嗯,真的!忘了吧。谢谢!:-)所以

是否有不需要大括号的情况,以便创建一个可以声明局部变量的新范围?不管我怎么想,它确实有大括号:例如块、条件、循环、尝试/捕获等。例如,没有块体的箭头函数似乎不会创建新的作用域。

A
for
loop with
let
创建一个作用域:

let x = "hello world";
for (let x = 0; x < 10; x++) console.log(x); // numbers ...
console.log(x); // "hello world"

嗯,真的!忘了吧。谢谢!:-)所以有…的,也有…的。。。也许还有别的什么?对,任何允许使用
let
const
声明的
for
表单都可以。我的意思是没有块体的
箭头函数
,修复了它。Sorry@NurbolAlpysbayev是的,这是正确的,尽管没有块体也不能有
let
const
声明。箭头函数总是为它们的参数创建一个新的作用域,不管有没有块体。@Bergi“对于它们的参数”是什么意思?所以参数可以看作变量声明,对吗?是的。声明一个参数(或者在分解结构的情况下,我甚至不会将目标标识符称为“参数”)会在函数范围中创建一个局部变量。
let x = "hello world";
let y = () => { let x = "new scope"; console.log(x); };
y(); // "new scope"
console.log(x): // "hello world"