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. IC各元器件封装形式图解

    CDIP-----Ceramic Dual In-Line Package CLCC-----Ceramic Leaded Chip Carrier CQFP-----Ceramic Quad Fla ...

  2. Makefile基础

    1.规则 规则定义格式如下 目标 : 条件1 条件2 ... 命令1 命令2 ... 隐含规则和模式规则(略) 2.变量 Makefile变量像C的宏定义一样,代表一串字符,在取值的地方展开. 1)两 ...

  3. jQuery 的选择器

    本文来自网上转帖 1. 基础选择器 Basics 名称 说明 举例 #id 根据元素Id选择 $("divId") 选择ID为divId的元素 element 根据元素的名称选择, ...

  4. Ehcache(08)——可阻塞的Cache——BlockingCache

    http://haohaoxuexi.iteye.com/blog/2119737 可阻塞的Cache—BlockingCache 在上一节我们提到了显示使用Ehcache锁的问题,其实我们还可以隐式 ...

  5. css去掉a标签点击后的虚线框(转自网络)

    outline是css3的一个属性,用的很少. 声明,这是个不能兼容的css属性,在ie6.ie7.遨游浏览器都不兼容. outline控制的到底是什么呢? 当聚焦a标签的时候,在a标签的区域周围会有 ...

  6. Watch​Kit Learning Resources

    查看原文:http://leancodingnow.com/watch-kit-learning-resources/  WatchKit是Apple发布的用来开发Apple Watch应用的框架,本 ...

  7. 【转】深入浅出REST

    转自:http://www.infoq.com/cn/articles/rest-introduction 不知你是否意识到,围绕着什么才是实现异构的应用到应用通信的“正确”方式,一场争论正进行的如火 ...

  8. C++学习笔记之输入、输出和文件

    一.流的概念 数据从内存的一个地址移动到另一个地址称为数据流动——流操作 流操作是通过缓冲区(buffer)机制实现的. 缓冲区:内存的一块区域——用作文件与内存交换数据. 数据从文件中读出:文件 → ...

  9. Codeforces Gym 100015F Fighting for Triangles 状压DP

    Fighting for Triangles 题目连接: http://codeforces.com/gym/100015/attachments Description Andy and Ralph ...

  10. Codeforces Gym 100231F Solitaire 折半搜索

    Solitaire 题目连接: http://codeforces.com/gym/100231/ Description 给你一个8*8棋盘,里面有4个棋子,每个棋子可以做一下某个操作之一: 1.走 ...