`
deng131
  • 浏览: 681554 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JavaScript命名函数

阅读更多
函数表达式实际上还是很常见的。Web开发中有一个常用的模式,即基于对某种特性的测试来“伪装”函数定义,从而实现性能最优化。由于这种伪装通常都出现在相同的作用域中,因此基本上一定要使用函数表达式。毕竟,如前所述,不应该根据条件来执行函数声明:

  // 这里的contains取自APE Javascript库的源代码,网址为http://dhtmlkitchen.com/ape/,作者盖瑞特·斯密特(Garrett Smit)
  var contains = (function() {
    var docEl = document.documentElement;

    if (typeof docEl.compareDocumentPosition != 'undefined') {
      return function(el, b) {
        return (el.compareDocumentPosition(b) & 16) !== 0;
      }
    }
    else if (typeof docEl.contains != 'undefined') {
      return function(el, b) {
        return el !== b && el.contains(b);
      }
    }
    return function(el, b) {
      if (el === b) return false;
      while (el != b && (b = b.parentNode) != null);
      return el === b;
    }
  })();

提到命名函数表达式,很显然,指的就是有名字(技术上称为标识符)的函数表达式。在最前面的例子中,var bar = function foo(){};实际上就是一个以foo作为函数名字的函数表达式。对此,有一个细节特别重要,请大家一定要记住,即这个名字只在新定义的函数的作用域中有效——规范要求标识符不能在外围的作用域中有效:

  var f = function foo(){
    return typeof foo; // foo只在内部作用域中有效
  };
  // foo在“外部”永远是不可见的
  typeof foo; // "undefined"
  f(); // "function"

那么,这些所谓的命名函数表达式到底有什么用呢?为什么还要给它们起个名字呢?

原因就是有名字的函数可以让调试过程更加方便。在调试应用程序时,如果调用栈中的项都有各自描述性的名字,那么调试过程带给人的就是另一种完全不同的感受。
分享到:
评论

相关推荐

    揭秘命名函数表达式

    ### 揭秘命名函数表达式:深入理解JavaScript的精髓 #### 核心概念与区别:函数表达式 vs 函数声明 在JavaScript的世界里,创建函数的两大方式——**函数表达式**与**函数声明**——构成了语言的核心部分,两者...

    javascript强制函数自动执行.pdf

    函数声明是定义一个命名函数的最常见方式。它由`function`关键字后跟函数名、参数列表以及函数体组成。函数声明会在当前作用域中创建一个全局变量,并将该变量绑定到函数对象上。 **示例:** ```javascript ...

    javascript 函数教程(由浅入深)

    - 除了函数声明外,还可以使用函数表达式,如匿名函数和命名函数表达式。 9. **闭包**: - 闭包允许函数访问并操作其外部作用域的变量,即使在其定义的外部调用。 10. **高阶函数**: - 函数可以作为参数传递给...

    javascript(函数查询chm+语法pdf)

    它最初被命名为LiveScript,但在 Netscape Navigator 浏览器上与Sun Microsystems的Java语言合作推广时,为了利用Java的知名度,改名为JavaScript。尽管名字相似,但JavaScript与Java并无直接关系,它们是两种完全...

    HTML_CSS_JavaScript命名规范

    JavaScript命名规范: 1. 变量命名:遵循驼峰式命名法,如variableName,描述变量用途。 2. 函数命名:同样使用驼峰式命名,功能相关的函数可以使用动宾结构,如functionName()。 3. 常量命名:全大写字母,单词间用...

    命名函数表达式探秘.pdf

    JScript 是 Internet Explorer 中的 JavaScript 引擎,它在处理命名函数表达式时存在一些问题。这些问题可能导致调试信息不准确或错误的行为。例如,某些版本的 JScript 可能会忽略函数名称,导致调试工具中显示的...

    理解JavaScript中函数的使用

    它分为两种类型:命名函数表达式和匿名函数表达式。 3. **构造函数**(Constructor Function): ```javascript var func5 = new Function(); ``` 使用`new Function()`的方式创建函数对象,这种方式不推荐使用...

    Javascript的匿名函数

    - **命名函数表达式**:这是一种常见的定义匿名函数的方式。 ```javascript function fnMethodName(x) { alert(x); } ``` - **匿名函数表达式**: ```javascript var fnMethodName = function(x) { alert(x);...

    javascript变量和函数

    在ECMAScript中,JavaScript的语法是区分大小写的,变量名遵循驼峰命名法,且不能与关键词或保留字冲突。关键词和保留字是语言中的特殊标识,如`var`、`function`、`if`等,这些在编写代码时应避免作为变量名使用。 ...

    JavaScript:函数与作用域

    - **定义**:将函数赋值给一个变量,可以是匿名函数或命名函数。 - **格式**:`var 函数名 = function(参数列表) { 函数体 };` - **示例**: ```javascript var greet = function(name) { console.log("Hello,...

    常用JavaScript函数 16 - 30(自我总结)

    - 函数表达式:匿名函数或命名函数,如`var func = function() {}`。 - 回调函数:作为参数传递的函数,常用于异步操作。 - 闭包:能够访问自身作用域、外部作用域以及全局作用域的函数。 - `arguments`对象:在...

    javascript函数详解!

    除了声明,我们还可以使用函数表达式创建函数,这包括匿名函数(没有名字的函数)和命名函数表达式。例如: ```javascript var add = function(a, b) { return a + b; }; // 匿名函数 var anonymousFunction ...

    JavaScript函数参数使用带参数名的方式赋值传入的方法

    这种方式的优点在于,即使参数的顺序发生了变化,函数依然能正确接收参数值,因为传递的是命名参数,而不是位置参数。这样的调用方式也更接近人类的自然语言理解,使得代码更加直观。 虽然这种方法在大多数现代...

    JavaScript函数的命名参数,另一种方法

    rp=%2FKB%2Fscripting%2F1045966%2FnamedCaller.zip&download=true",这可能是一个指向具体示例或扩展阅读材料的链接,提供了更多关于模拟JavaScript命名参数的实践案例。在实际场景中,这可能包含了一些实用的库或...

    Javascript的匿名函数讲解

    匿名函数是JavaScript语言中的一个强大特性,它允许我们不给函数命名,直接声明并执行。在本文中,我们将深入了解匿名函数的定义、特点、代码模式以及应用。 首先,需要明白什么是匿名函数。在JavaScript中,定义...

    JavaScript 函数.pdf

    除了使用 function 关键字定义命名函数外,您还可以使用匿名函数。匿名函数是没有名称的函数,通常用于在需要时声明和使用单次函数。例如: ``` var myFunction = function(x, y) { return x + y; }; ``` 箭头...

    揭秘命名函数表达式1

    **命名函数表达式**(Named Function Expression, NFE)是函数表达式的一个特殊情况,即使在函数表达式中给出了一个名字,如`var bar = function foo() {}`。这个名字`foo`只在函数体内部可用,外部无法访问,因此...

    JavaScript中匿名、命名函数的性能测试

    根据函数是否具有名称,JavaScript中的函数可以分为匿名函数和命名函数。匿名函数指的是没有名字的函数,通常用于立即调用函数表达式(IIFE)等场景。命名函数则是具有名称的函数,它们的名称在函数定义时被明确指定。...

    深入认识JavaScript中的函数

    3. **命名函数表达式**: ```javascript var func3 = function func4(...params) { // 函数体 }; ``` 4. **使用`new Function()`**: ```javascript var func5 = new Function(...params, "function body"); `...

    JavaScript 基础函数_深入剖析变量和作用域

    JavaScript是一种广泛用于网页开发的脚本语言,它的函数和作用域是实现代码逻辑结构和模块...理解JavaScript中的变量作用域非常重要,它有助于避免变量命名冲突和意外的变量修改,从而编写出更加健壮和易于维护的代码。

Global site tag (gtag.js) - Google Analytics