ECMA-262-3 深入理会:第五章 函数 [译]
导言 在这篇文章中,我们将更具体的接头一个常见的ECMAScript工具——函数。我们将具体地研究函数的各类范例,表明这种或那种范例的函数怎样影响一个上下文的变量工具以及函数某一个范例的浸染域链中包括什么。我们将答复论坛中像这样常常被问及的题目:“下面建设的函数与以一种“风俗的方法”界说的函数之间有什么区别(假若有,是什么?)”(注:原文的次序不是这样,本人作了调解) var foo = function () { ... }; 以一种“风俗的方法”界说的函数: function foo() { ... } 可能,“为什么下面的函数挪用应该用圆括号困绕?” (function () { ... })(); 由于这些文章独立于早期的章节,因为我们会起劲地行使来自这些章节的语法,为了全面领略这一部门,若有须要,值得去读第二章:变量工具和第四章:浸染域链。 可是让我们一个个接着来,起首从函数的范例研究起。 函数范例 在ECMAScript 中有三种函数范例,每一种都有本身的特点。 函数声明 函数声明(缩写为FD)是这样一种函数:
function exampleFunc() { ... } 这种函数范例的首要特点在于它们仅仅影响变量工具(即函数存储在上下文的VO中)。该特点也表明白第二个重要点(它是变量工具特征的功效)——在代码执行阶段它们已经可用(由于FD在进入上下文阶段已被VO网络)。 譬喻(源码中函数在其声明之前被挪用) foo(); function foo() { alert('foo'); } 同样一个重要点是界说中的第二点——源码中函数声明的位置: // function declaration // is directly in: // either the global context // at Program level function globalFD() { // or directly inside the body // of another function function innerFD() {} } 在代码中的任何其他位置,函数声明不能呈现——即,不行能在表达式位置或一个代码块中界说它。 代替函数声明(更有也许以为是与之相对)的是函数表达式。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |