`

Javascript 两种 function 定义的区别

阅读更多

大家都知道Javascript 有两个种定义Function的方法非常常用。例如

function a(){alert("a")}
var a = function(){alert("a")}

虽然两个种方式定义出来的 function 调用的时候结果一样,但是中间还是有区别的。举个简单的例子,假如我们要重定义 a() ,而且新的方法要继承 a() 里面所有方法并且进行其他扩展的话。就可以明显看到这两个方式的区别了。

1. 首先,我们先建立一个临时的变量来存储 a()
   var b = a;

然后,重新定义a()
第一种方式:
function a(){
    b();
    alert("ok");
}


第二种方式:
a = function(){
    b();
    alert("ok");
}


这是大家可以尝试发现。第一种方式重新定义的 a() 会出现堆栈溢出的错误。而第二种方式却成功保留了原来 a() 所执行的脚本,成功 alert 出了 "a" "ok" 的字样,说明 a() 的方法被重定义了。

这里就可以很明显区分两个方式的区别了。定义的顺序不同。
第一种,刚开始其实没有重新定义 a 这个function 而在里面执行了其本身。
第二种方式, a = function () 这里没有执行到 function 里面的代码 a 已经被重新定义了。所以这里的重定义是有效的。

分享到:
评论

相关推荐

    javascript两种function的定义介绍及区别说明

    在JavaScript中有两种主要的函数定义方式,即函数声明(Function Declaration)和函数表达式(Function Expression)。这两种方式在大部分场景下表现相同,但在特定条件下会有差异。下面将详细讨论这两种函数定义...

    JavaScript中的function使用方法.docx

    JavaScript 中的 function 使用方法可以分为两种:作为普通逻辑代码容器和作为对象。 一、function 作为普通函数 在 JavaScript 中,function 可以作为普通函数使用,类似于 C/C++ 中的函数。它可以在脚本的任何...

    深化浅析JavaScript中的Function类型_.docx

    2. **函数定义方式**:JavaScript提供了两种主要的函数定义方式,即函数声明和函数表达式。函数声明会被提升到其所在作用域的顶部,可以在声明之前被调用;而函数表达式则必须等到解析器执行到相应的代码行才会被...

    JavaScript使用function定义对象并调用的方法

    总的来说,JavaScript通过function定义对象提供了一种灵活的方式来实现面向对象编程。这种方式允许我们创建可复用的代码结构,通过构造函数创建具有特定属性和方法的对象实例。同时,`this`关键字和`new`关键字在...

    JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍

    在JavaScript中,函数的定义可以通过多种方式进行,其中最常见的两种是使用`function`关键字直接声明,以及使用变量赋值的方式定义一个匿名函数或具名函数表达式。这两种方式在JavaScript引擎的处理过程中有所区别,...

    javascript面向对象之定义成员方法实例分析.docx

    - `function Person(name, age)`:定义了一个名为 `Person` 的构造函数,接受两个参数 `name` 和 `age`。 - `this.name = name;`:将传入的 `name` 赋值给当前对象的 `name` 属性。 - `this.age = age;`:将传入...

    用new创建对象和直接定义的区别

    本文将深入探讨两种常见的对象创建方式:使用`new`关键字创建对象和直接定义对象。这两种方法虽然最终都能创建类的实例,但它们在内存分配、作用域和生命周期等方面存在显著差异。 ### 1. `new`关键字创建对象 `...

    JS类中定义原型方法的两种实现的区别

    ### JS类中定义原型方法的两种实现的区别 #### 引言 在JavaScript中,通过类的形式定义对象是一种常见的做法。为了扩展类的功能或为类添加新的行为,开发者常常需要向类的原型(`prototype`)添加方法。在...

    JavaScript 定义function的三种方式小结

    这种方式在某些特定场景下可能有用,比如动态生成函数,但在大多数情况下,应该优先考虑前两种更安全的方法。 关于函数定义的差异,函数表达式和函数声明的主要区别在于作用域和提升(Hoisting)。函数声明会被...

    Javascript事件的定义.doc

    JavaScript事件有两种事件流:冒泡和捕获。事件从最具体的节点(文档中的元素)开始,然后向上遍历到最不具体的节点(文档)。这种模式称为冒泡。相反,事件捕获是从最不具体的节点开始,向下到达最具体的节点。可以...

    Javascript使用function创建类的两种方法(推荐)

    上述两种使用function创建类的方法是推荐的方式,在ES6引入class关键字之前,是JavaScript中非常流行的面向对象编程实践。随着ES6及以后版本的发展,现代JavaScript也提供了更为简洁和直观的语法来处理面向对象编程...

    JavaScript定义类或函数的几种方式小结

    混合构造函数/原型模式结合了构造函数和原型两种方式的优点。通过构造函数定义对象的属性,通过原型定义对象的方法。这样,每个对象的属性仍然是唯一的,而方法则可以通过原型链被所有对象共享。混合模式的代码示例...

    JavaScript中的函数的两种定义方式和函数变量赋值

    在JavaScript中,函数可以以两种主要方式定义:声明式函数和函数表达式。此外,函数在JavaScript中也可被当作变量处理,可以被赋值、作为参数传递给其他函数。接下来我们将详细解释这些概念,并通过提供的代码示例来...

    JavaScript对象定义

    在JavaScript中,有两种主要的创建对象的方法:字面量语法和构造函数。 1. 字面量语法(Literal Notation): 这是最简单的创建对象的方式,通过大括号{}来定义一个空对象,然后通过冒号分隔的键值对来添加属性。...

    javascript 中(function{})这种写法什么意思?.docx

    在JavaScript中,`(function(){})()` 这种写法被称为**立即执行函数表达式**(Immediately Invoked Function Expression,简称IIFE)。它是一种特殊的函数调用方式,其特点是在定义一个函数的同时立即执行该函数。 ...

    JavaScript中定义对象原型的两种使用方法

    本文将深入探讨两种常见的定义对象原型的方法:通过`prototype`属性和通过对象字面量。 ### 第一种方法:使用`prototype`属性 ```javascript function Person() { this.username = new Array(); this.password =...

    Javascript中实现trim函数的两种方法.docx

    ### JavaScript中实现trim函数的两种方法 在日常的前端开发工作中,我们经常需要对字符串进行操作,其中一种常见的需求就是去除字符串两端的空白字符。尽管现代JavaScript已经内置了`trim()`方法来帮助开发者轻松...

    JavaScript基础篇(3)之Object、Function等引用类型

    - 创建Object对象有两种方法: - 构造函数方式:var obj = new Object(); obj.name = "张三"; obj.age = 23; - 字面量方式:var obj = {name: "张三", age: 23}; - 字面量方式更为常见和便捷。 - 访问对象属性...

    JavaScript引用类型Function实例详解

    总结,`Function`引用类型在JavaScript中扮演着核心角色,理解它的概念、定义方式以及与其他类型的区别是成为熟练的JavaScript开发者的关键。通过深入学习和实践,可以更好地掌握JavaScript的动态性和灵活性。

Global site tag (gtag.js) - Google Analytics