`

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的定义方式function a(){}和a=function(){}具体使用如下,感兴趣的朋友可以参考下,希望对你对你学习function的定义有所帮助

    javascript 面向对象function详解及实例代码

    javascript 面向对象function详解  js中的函数有三种表示方式: //函数的第一种表示方式:函数关键字的方式 function f1() { ... 函数的定义方式一般有以上三种,前两种方式基本没什么区别,第三种定义

    JavaScript面向对象

    在JavaScript中定义JavaScript对象有两种方式: 方式一: var Book ={ getBookName:function(){ alert("获取书的名称") ; } }; 方式二 var oBook = function(){}; oBook.getBookName=...

    javascript 两种声明函数的方式的分析

    JavaScript有两种声明函数的方式,一个是函数表达式定义函数,也就是我们说的匿名函数方式,一个是函数语句定义函数,下面看代码: /*方式一*/ var FUNCTION_NAME = function() { /* FUNCTION_BODY */}; /*方式二*/...

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

    函数名当参数,传递给另一个函数 */ //==================js中函数的两种定义方式和函数变量赋值================ //在javascript中定义一个函数就可以理解成定义了一个变量 //js中的变量时弱类型的哦。 //———-1 ...

    【JavaScript源代码】JavaScript中箭头函数与普通函数的区别详解.docx

    JavaScript中箭头函数...箭头函数有两种格式,一种只包含一个表达式,连{ ... }和return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ ... }和return。 箭头函数是匿名函数,不能作为构造函数,不能使用n

    javascript 用函数语句和表达式定义函数的区别详解

    使用javascript多年,写过无数函数,今天却才真正弄明白两种函数定义的区别,真是悲剧,写下这个随笔, 以时刻提醒自己要打好基础 , 一大把年纪了, 不能继续懵懵懂懂了。 通常我们会看到以下两种定义函数的方式: ...

    深入浅析JavaScript中的Function类型

    Function是javascript里最常用的一个概念,javascript里的function是最容易入手的一个功能,但它也是javascript最难理解最难掌握的一个概念。 1. Function类型是js中引用类型之一,每个函数实际上都是... //两种方

    JS类定义原型方法的两种实现的区别评论很多

    我们知道,给JavaScript类添加原形(prototype)方法是很简单的。而且常用的有下面这两种方法,可是这两种方法在使用时有区别吗? JScript Class: 代码如下: function...# re: JS类定义原型方法的两种实现的区别 

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

    而且常用的有下面这两种方法,可是这两种方法在使用时有区别吗?  JScript Class:  function JSClass()  {  }  Extends prototype method:  JSClass.prototype.MethodA = function()  {  };  Or  ...

    【JavaScript源代码】vue实现页面打印自动分页的两种方法.docx

    vue实现页面打印自动分页的两种方法  本文实例为大家分享了vue实现页面打印自动分页的具体代码,供大家参考,具体内容如下 一、通过ref方式获取元素进行打印 1.封装一个js文件 // 打印类属性、方法定义 /* ...

    浅析javascript中函数声明和函数表达式的区别

    javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,...

    javascript函数的解释

    68.JS中分为两种窗体输出:模态和非模态.window.showModaldialog(),window.showModeless() 69.状态栏文字的设置:window.status='文字',默认的状态栏文字设置:window.defaultStatus = '文字.'; 70.添加到收藏夹:...

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

    第一种: function Person() { this.username = new Array(); this.password = "123"; } Person.prototype.getInfo = function() { alert(this.username + ", " + this.password); } var p = new Person();...

    javascript学习笔记.docx

    2) 一个应用程序出现的每个窗口或框架都对应一个Window对象,而且都为客户端JavaScript代码定义了一个唯一的执行环境。 3) 脚本执行过程是Web浏览器的HTML解析过程的一部分。脚本按照它们的出现顺序执行。 4) 简单的...

    JavaScript定义类和对象的方法

    JS定义一个类有两种定法(我只知道这两种): 1. 定义函数的方式: 定义: 代码如下:function classA(a) {  this.aaa=a; //添加一个属性  this.methodA=function(ppp) //添加一个方法  {  alert(ppp)...

    深入理解javascript中的立即执行函数(function(){…})()

    ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因...

    浅谈javascript 函数表达式和函数声明的区别

    javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,...

    javascript面向对象之Javascript 继承

    在JavaScript中实现继承可以有多种方法,下面说两种常见的。 一,call 继承,先看代码: 先定义一个“人”类 代码如下: //人类 Person=function(){ this.name=”草泥马”; this.eat=function(){ alert(“我要...

Global site tag (gtag.js) - Google Analytics