Javascript 函数的定义的方式有不止一种。

第一种方式:

function fn1(){

alert(typeof fn1);

alert(“fn1”);

}

在调用的时候直接就可以fu1();

函数运行的结果就是两个alert:function   fn1.

有必要说明的是,function是一个对象(在后面对对象的说明中也会具体细说),新定义的函数就是function这个类的一个实例。但是function和object的区别就在于在定义两个函数实例fn1和fn2的过程中,实现了对function的的拷贝。函数虽然是一个对象,区别在于:对象通过引用的只想完成对象的赋值,函数是通过对对象的拷贝完成。

这里举例说明:

function fn1(){

alert(“fn1”)

}

var fn2=fn1;

fn2();

fn1();

fn1=function(){

alert(“fnn1”)

}

fn2();

fn1();

这里输出的就是fn1 fn1 fn1 fnn1,说明的是:在对fn1重新定义之后,内存又给fn1开辟了一块新的空间,fn2并没有受到干扰。这是函数和对象的区别。

对比试验:对象的定义

var o1=new Object;

var o2=o1;

o2.name="lele";

alert(o1.name);

这里输出的是lele,意思就是说我们对o2的属性改变之后,o1对应的参数跟随变化。对于对象而言,是通过引用来完成赋值,牵一发而动全身。

既然函数就是一个类,那么可以用构造函数的方式构建函数如下:

第二种定义方式(构造函数的方法):

var fun =new Function("num1","num2","alert(num1+num2)");

fun(2,3);

这里输出5.

下面说一下函数的传值:

function callfun(reg,arg){

return reg(arg)

}

function fun(str){

alert("Hello "+str)

}

callfun(fun,"world!")

用到的是函数之间的值传递。函数既然是一个类,那么这里就可以把函数通过参数来传递。这是很令人震惊的!第一个函数callfun第一个参数就是一个函数名,特用来触发第二个函数fun,第二个函数通过alert将拼接好的字符串显示出来。最后的结果就是Hello world!

下面说一下函数的重载,就是针对不同参数的函数,达到理想的结果:

function fn1(num1,num2){

alert(num1+num2)

}

function fn1(num1){

alert(num1)

}

fn1(3,2);

fn1(3);

很遗憾这里返回的都是3,也就是说,函数重载并没有起作用。所以javascript是不存在函数的重载现象的。

值得注意的是如果是

function fn1(num1){

alert(num1)

}

function fn1(num1,num2){

alert(num1+num2)

}

fn1(3,2);

fn1(3);

这里返回5和NaN。所以,对于javascript函数来说,参数只能多,不能少。

Javascript函数(定义、传值、重载)的更多相关文章

  1. JavaScript 函数定义方法

    JavaScript 函数定义方法. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function functionName(parameters) { 执行的代码 } 函数声明后不会立 ...

  2. 深入理解javascript函数定义与函数作用域

    最近在学习javascript的函数,函数是javascript的一等对象,想要学好javascript,就必须深刻理解函数.本人把思路整理成文章,一是为了加深自己函数的理解,二是给读者提供学习的途径 ...

  3. JavaScript函数定义和调用 变量作用域

     本文是笔者在看廖雪峰老师JavaScript教程时的个人总结   JavaScript中函数定义可以是这样的格式 function 函数名(参数) {     函数体 } 也可以是这样的格式     ...

  4. javascript函数定义表达式和函数声明的区别

    在javascript中,函数有两种定义写法,函数定义表达式和函数声明,其例子分别如下所示: var test = function(x){ return x; } function test(x){ ...

  5. [转]javascript函数定义表达式和函数声明的区别

    在javascript中,函数有两种定义写法,函数定义表达式和函数声明,其例子分别如下所示: var test = function(x){ return x; } function test(x){ ...

  6. JavaScript 函数定义

    JavaScript 使用关键字 function 定义函数. 函数可以通过声明定义,也可以是一个表达式. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function function ...

  7. JavaScript函数定义 ,参数调用

    一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...

  8. JavaScript 函数定义和调用

    普通的函数定义方法: function abs(x):{ if (x >= 0){ return x; }else { return -x ; } } 两种方法是等价的 var abs = fu ...

  9. javascript函数定义以及常见用法

                  我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头函数,Class类写法,高阶函数,函数节流/函数防抖,下面我就 ...

  10. js基础之javascript函数定义及种类-普通涵数-自执行函数-匿名函数

    普通函数 1.不带参数 function fucname(){ alert("hello"); } funcname() 2.带参数 function funcname(arg){ ...

随机推荐

  1. 分享吉林大学机械科学与工程学院,zhao jun 博士的Halcon学习过程及知识分享

    分享吉林大学机械科学与工程学院,zhao jun 博士的Halcon学习过程及知识分享 全文转载zhao jun 博士的新浪博客,版权为zhaojun博士所有 原文地址:http://blog.sin ...

  2. junit学习(3.x)

    自动化测试 测试所有测试类 import junit.framework.TestCase; import junit.framework.Assert; /** *测试类必须要继承TestCase类 ...

  3. 微信内置浏览器图片查看方式的原生实现(非jssdk)

    对于非公众平台网页,想调起图片预览组件,就跟公众号文章一样的图片阅读方式,实现起来是比较简单的,官方也提供了jssdk来做这个.详见 http://mp.weixin.qq.com/wiki/7/aa ...

  4. (C#)使用队列(Queue)解决简单的并发问题

    (C#)使用队列(Queue)解决简单的并发问题 2015-07-16 13:04 13265人阅读 评论(8) 收藏 举报  分类: Asp.Net(8)  版权声明:本文为博主原创文章,未经博主允 ...

  5. GIT 中提示 please tell me who you are

    如果使用git过程中出现了,please tell me who you are ,需要设置一下使用者的身份. 1.git config user.name "username" ...

  6. MyEclipse 编写 ExtJS 卡死问题解决方法

    MyEclipse 8.6  在 jsp 中编写 ExtJS时,会出现卡死现象,让人甚是头疼.网上找了很多方法,折腾半天,还是不管用. 什么MyEclipse 优化,Validation 取消,MyE ...

  7. Xen安全架构sHype/ACM策略配置图文教程

    实验要求 1.     熟悉Xen虚拟化平台部署: 2.     Xen sHype/ACM安全架构中的Simple TE和Chinese Wall策略及事实上现机制的分析与验证. 第1章       ...

  8. 使用visual studio 2013 快速搭建phonegap开发环境

    前一段时间开发了一款简单的Phonegap应用,遇到了很多坑,其中有一个坑就是在搭建开发环境上.由于Phonegap 2.x 与3.x 区别比较大,导致了开发环境也有所不同.2.x 是这样的http: ...

  9. WinForm特效:拦截窗体上各个部位的点击

    windows窗体的标题栏无法直接通过一些默认的事件来控制,需要了解和WM_NCHITTEST相关的windows消息. 以下示例演示了最简单的效果片断: 他会把客户区和标题栏的效果互换,比如无法按住 ...

  10. android编程之ExpandableListView使用总结

    ExpandableListView这个类与其他android列表形式视图是比较类似的,看源码的话,可以知道它是多种视图组合而成.今天不分析源码,只写些使用心得.   1.Button 对,没错,就是 ...