js:深入函数的定义

函数定义方式:

1.function fun1(){alert("fun1");}  //函数就是一个非常特殊的对象,是一个Function的实例,其实在内存中存储的操作是通过一个键值对来存储的。

2.由于函数是一个对象,所以可以通过如下方式定义

var fun2 = fun1;  //通过函数拷贝给fun2完成赋值,但fun1、fun2这两个引用并没有指向同一个对象(虽然他们指向的对象的内容是一样的)。

fun1 = function(){alert("fun111");}

//函数虽然是一个对象,但是却和对象有一些区别,对象是通过引用的指向来完成对象的赋值的,

而函数却是通过对象的拷贝来完成的。所以fun1即使变了,也不会影响fun2。

fun2();  //fun1

fun1();  //fun111

//对于对象而言,是通过引用的指向来完成赋值的,此时修改o1或者o2会导致另一方的指向随之改变。

var o1 = new Object();

var o2 = o1;  //o1、o2指向同一块空间

o2.name = "octopus";

alert(o1.name); //octopus

//

--------------------------------------------------------------------------------------

1). function sum(num1,num2){return num1+num2;}    //相当于:var sum = function(num1,num2){return num1+num2;}

2). function sum(num1){return num1;}              //相当于:var sum = function(num1){return num1}

alert(sum(1));  //1

alert(sum(1,1));//1,不是2

/*此时sum所指向的空间已经从有两个参数的函数变化到只有num1的函数中,

在调用的时候就只会调用只有num1的函数,

特别指出:函数的参数和调用没有关系,如果函数只有一个参数,但是却传入了两个参数,仅仅只会匹配一个

所以在js中函数不存在重载。*/

3.var fn = new Function{"num1","num2","alert(‘fun:‘+(num1+num2));"};

//等价于:function fn(num1,num2){alert(num1+num2);}

//函数是对象,不存在重载,只存在覆盖,后面的定义会覆盖前面的定义。

原创文章如转载,请注明出处”“本文首发于csdn网站:http://blog.csdn.net/magneto7/article/details/24584213

js:深入函数的定义,布布扣,bubuko.com

时间: 2024-10-22 16:50:10

js:深入函数的定义的相关文章

浅谈js中函数作用域和声明提前

JavaScript的函数具有两个主要特性,一是函数是一个对象,二是函数提供作用域支持,今天主要聊聊函数的作用域支持. 简单看两个概念: 具名函数表达式 var add = function add (a) { return a } 这段代码描述了一个函数,称为‘具名函数表达式’. 如果省略函数表达式中的名字,它就是‘匿名函数表达式’,即匿名函数,例如 var add = function (a, b) { return a + b; }; 最后看下‘函数声明’ function foo() {

node.js fs所有函数的定义和功能

表4-1 fs 模块函数表 功能 异步方法 同步方法 打开文件  fs.open(path,flags, [mode], [callback(err, fd)])  fs.openSync(path, flags, [mode]) 关闭文件  fs.close(fd, [callback(err)])  fs.closeSync(fd) 读取文件(文件描述符 )fs.read(fd,buffer,offset,length,position, [callback(err, bytesRead,

JS中函数定义的三种格式

第一种:function  fun1(参数1,参数2...){            //通过创建函数名来定义函数 函数体: } 第二种:var fun2=new Function("参数1,参数2...","函数体");         //通过创建变量来定义函数 第三种:function(){                //匿名函数 函数体: } 说明: 1,在调用时,可以为没有参数的函数传递参数:但如果没有传递参数给有参数的函数时,会默认参数为undefi

js 中callback函数的定义和使用

这是js里的解释了,其他语言的算我没说. 字面上理解下来就是,回调就是一个函数的调用过程.那么就从理解这个调用过程开始吧.函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b.那么这个过程就叫回调. 其实中文也很好理解:回调,回调,就是回头调用的意思.函数a的事先干完,回头再调用函数b. 举个现实的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你.”对不,然后你女朋友回家以后还真给你发了条信息.小伙子,你有戏了. 其实这就是一个回调的过程.你留

对JS中函数的理解

函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能) var fn=function(a){return a+100;} fn=function(a){return a+200;} alert(fn(100)); //300 要访问函数的引用(指针)而不是执行函数时,必须去掉圆括号,加上圆括号表示访问函数执行后的结果 函数体内部的语句在执行时,一旦

深入剖析js命名空间函数namespace

在看阿里员工写的开源数据库连接池的druid的源代码时,发现了其中在jquery的原代码中有定义了一个命名空间的函数:$.namespace(),其代码如下: 网址为:https://github.com/alibaba/druid/blob/master/src/main/resources/support/http/resources/js/jquery.min.js 使用方法为: <script type="text/javascript" src="js/jqu

js学习——函数

函数声明 function funName(parameter){} 函数表达式,并把函数存储在变量x中 //不用给函数名,后续并不能直接用给定的函数名调用 var x = function(a){return a}; x;//返回的是一个函数对象 x();//调用函数 用函数构造函数定义一个函数(参数, 表达式) var myFunc = new Function("a", "b", "return a + b"); 函数提升:声明会自动提前,

javascript 函数的定义与参数的有无

一.函数定义 function fName(params){ statements; return somevalue;//可以省略 } 注意事项: 1.参数可有,可无.不定义参数,在调用参数时,也可以传入参数: 例如: 1 function add(){ 2 if(arguments.length==1){ 3 alert(arguments[0]); 4 }else if(arguments.length==2){ 5 alert(arguments[0] + arguments[1] );

【js】函数问题

一.函数重载问题: 由于js的函数传入的参数当做arguments对象(和数组类似,但不是Array的实例),传入的参数类型和数量没有限制,没有函数签名,所以如果要实现重载功能 的话,只能是不够完美得实现: function doAdd(num1,num2){ if(arguments.length==1){ console.log(num1+10); } else if (arguments.length==2){ console.log(num1+num2); } } 这里可以通过传入的参数