在 ECMAScript 2017 (ES8) 中,尝试访问未定义的变量将抛出 TypeError。这是一个重要的变化,因为在之前的版本中,尝试访问未定义的变量会返回 undefined,这可能会导致一些难以调试的错误。
为什么要这样做
在旧版本的 ECMAScript 中,尝试访问未定义的变量会返回 undefined。这看起来似乎没有什么问题,但实际上它可能会导致一些难以调试的错误。例如,在下面的示例中:
function foo() { console.log(bar); } foo();
在旧版本的 ECMAScript 中,这将输出 undefined,因为尝试访问未定义的变量会返回 undefined。但实际上,这里的问题是 bar 变量未定义,而不是它的值是 undefined。这可能会导致一些难以调试的错误,因为代码看起来好像没有问题。
在 ECMAScript 2017 (ES8) 中,尝试访问未定义的变量将抛出 TypeError。这使得代码更加健壮,因为它可以捕获到未定义的变量,而不是返回 undefined。
如何使用
如果你想在 ECMAScript 2017 (ES8) 中使用这个功能,你只需要确保你的代码是在严格模式下运行的。严格模式可以通过在代码的开头添加以下代码来启用:
'use strict';
这将强制 ECMAScript 2017 (ES8) 中的所有新功能,并且会将尝试访问未定义的变量抛出 TypeError。
示例代码
下面是一个示例代码,它演示了在 ECMAScript 2017 (ES8) 中访问未定义的变量将抛出 TypeError:
'use strict'; function foo() { console.log(bar); } foo(); // ReferenceError: bar is not defined
在这个示例中,bar 变量未定义,因此将抛出 ReferenceError。这使得代码更加健壮,因为它可以捕获到未定义的变量,而不是返回 undefined。
结论
在 ECMAScript 2017 (ES8) 中,尝试访问未定义的变量将抛出 TypeError。这是一个重要的变化,因为它可以捕获到未定义的变量,而不是返回 undefined,从而使代码更加健壮。如果你想在 ECMAScript 2017 (ES8) 中使用这个功能,你只需要确保你的代码是在严格模式下运行的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67650dd376af2b9a20e79c16