gpt4 book ai didi

javascript - 函数参数的未声明变量中的 TDZ

转载 作者:行者123 更新时间:2023-11-29 17:39:50 26 4
gpt4 key购买 nike

<分区>

当我尝试运行此代码段中定义的 foo 函数时,我得到一个 ReferenceError,因为 b 未定义

var b = 3;

function foo( a = 42, b = a + b + 5 ) {
// ..
}
foo()

这看起来像 TDZ 错误,因为 b 已在外部作用域中定义,但它还不能在函数签名中用作右侧值。

这是我认为编译器应该做的:

var b;
function foo(..) { .. }

// hoist all functions and variables declarations to the top

// then perform assignments operations

b = 3;
foo();

//create a new execution environment for `foo`
// add `foo` on top of the callstack

// look for variable a, can't find one, hence automatically create a
`var a` in the local execution environment and assign to it the
value `42`
// look for a `var b` in the global execution context, find one, use
the value in it (`3`) as a right-hand-side value.

这不应该引发 ReferenceError。看起来这不是这里发生的事情。

谁能解释编译器实际上做了什么以及它如何处理这段代码?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com