首页 > web前端 > js教程 > ES6 块级函数在严格和非严格模式下(有或没有 Web 扩展)如何表现?

ES6 块级函数在严格和非严格模式下(有或没有 Web 扩展)如何表现?

DDD
发布: 2024-12-17 01:39:26
原创
439 人浏览过

How Do ES6 Block-Level Functions Behave in Strict and Non-Strict Modes, with and without Web Extensions?

ES6 中的块级函数:语义精度

ES6 规范引入了块级函数,允许在块内声明函数。理解它们的语义对于有效编程至关重要。

块级函数行为

Setting Visible Outside Block Hoisted Hoisting Scope Temporal Dead Zone
Non-strict, No Web Extensions No No N/A N/A
Strict, No Web Extensions No Yes Block Level Yes
Non-strict, With Web Extensions Yes Yes Function Level Before Block
Strict, With Web Extensions Yes Yes Function Level Before Block

严格模式和块级函数

本文中的“严格模式”指的是函数或脚本的严格性,其中包含函数声明的块出现,而不是函数本身。 “Web 扩展”仅适用于具有“正常”函数外观(无名称冲突)的草率(非严格)代码。

在纯 ES6 中(没有“Web 扩展”),块中的函数声明具有一致的语义无论严格程度如何。它们被提升到块的顶部,并且行为类似于常规函数声明。

Web 兼容性语义

通过“Web 扩展”,草率模式引入了额外的语义。块内的函数声明作为 var 声明提升到封闭函数的顶部,并且在计算函数声明时将函数对象分配给该变量。

这会导致同一对象有两个绑定标识符:一个函数作用域(在块外可见)和一个块作用域(仅在块内可见)。函数作用域的绑定初始化为 undefined ,直到函数被声明,此时它被分配函数对象。

在块执行中遇到函数声明之前,函数作用域的绑定是未定义的并且访问它会抛出异常。

以上是ES6 块级函数在严格和非严格模式下(有或没有 Web 扩展)如何表现?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板