首页 > 编程笔记 > JavaScript笔记 > JS函数

JS比较3种函数的作用域

在《JS函数定义》一节中,我们讲到了 3 种创建函数的方法,分别是:使用 function 语句、使用 function 表达式和使用 Function  构造函数。

下面分别使用这 3 种方法定义一个空函数:
function f() {}
var f = function () {}
var f = new Function()
通过这 3 种方法创建的函数对象的 [[scope]] 属性值会有所不同,进而影响函数执行过程中的作用域链。
这 3 中方法的详细比较如表所示。

函数定义方法比较
函数定义方法 使用 function 语句 使用 Function() 构造函数 使用函数表达式
兼容 完全 JavaScript 1.1 及以上 JavaScript 1.2 及以上
形式 句子 表达式 表达式
名称 有名 匿名 匿名
主体 标准语法 字符串 标准语法
性质 静态 动态 静态
解析 以命令的形式构造一个函数 解析函数体,能够动态创建一个新的函数对象 以表达式的形式构造一个函数对象
作用域 具有函数作用域 顶级函数,具有顶级作用域 具有函数作用域

所有教程

优秀文章