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