Javascript函数(定义、传值、重载)
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函数(定义、传值、重载)的更多相关文章
- JavaScript 函数定义方法
JavaScript 函数定义方法. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function functionName(parameters) { 执行的代码 } 函数声明后不会立 ...
- 深入理解javascript函数定义与函数作用域
最近在学习javascript的函数,函数是javascript的一等对象,想要学好javascript,就必须深刻理解函数.本人把思路整理成文章,一是为了加深自己函数的理解,二是给读者提供学习的途径 ...
- JavaScript函数定义和调用 变量作用域
本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 JavaScript中函数定义可以是这样的格式 function 函数名(参数) { 函数体 } 也可以是这样的格式 ...
- javascript函数定义表达式和函数声明的区别
在javascript中,函数有两种定义写法,函数定义表达式和函数声明,其例子分别如下所示: var test = function(x){ return x; } function test(x){ ...
- [转]javascript函数定义表达式和函数声明的区别
在javascript中,函数有两种定义写法,函数定义表达式和函数声明,其例子分别如下所示: var test = function(x){ return x; } function test(x){ ...
- JavaScript 函数定义
JavaScript 使用关键字 function 定义函数. 函数可以通过声明定义,也可以是一个表达式. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function function ...
- JavaScript函数定义 ,参数调用
一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...
- JavaScript 函数定义和调用
普通的函数定义方法: function abs(x):{ if (x >= 0){ return x; }else { return -x ; } } 两种方法是等价的 var abs = fu ...
- javascript函数定义以及常见用法
我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头函数,Class类写法,高阶函数,函数节流/函数防抖,下面我就 ...
- js基础之javascript函数定义及种类-普通涵数-自执行函数-匿名函数
普通函数 1.不带参数 function fucname(){ alert("hello"); } funcname() 2.带参数 function funcname(arg){ ...
随机推荐
- springMVC使用注解方式进行页面跳转
<!--控制层-->package cn.org.spartacus.spring; import org.springframework.beans.factory.annotation ...
- MVC 小常识
什么是MVC (模型 视图 控制器)? MVC是一个架构模式,它分离了表现与交互.它被分为三个核心部件:模型.视图.控制器.下面是每一个部件的分工: 视图是用户看到并与之交互的界面. 模型表示业务数据 ...
- iOS开发-基本的网络知识
一.HTTP协议的主要特点:(摘自 仰望星空 的博客)重点内容 1. CS模式 2. 简单快速:只需要传送请求方法和路径.(常用方法有GET,HEAD,POST) 3. 灵活:任意对象都可以,类型由C ...
- CriminalIntent程序中Fragment相关内容
Activity中托管UI fragment有两种方式: 添加fragment到acitivity中 在activity代码中添加fragment 第一种方法即将fragment添加到acitivit ...
- Lazy Loading Images
Use a blank.gif as the src of images, and include the width and height of the final image. HTML: < ...
- 由“大数据量Excel入库高效方式”瞥见“并联系统”之优势
使用场景: 当你有一个Excel文件,需要把其中的数据高速录入到数据库中,文件中包含10万条以上数据. 设计方案: 我们将整个过程分成三个阶段,A(装载Excel文件). ...
- Looksery Cup 2015 B. Looksery Party 暴力
B. Looksery Party Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/549/pro ...
- 【转】Delphi多线程学习(9):多线程数据库查询(ADO)
原文:http://www.cnblogs.com/djcsch2001/articles/2382559.html ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用 ...
- android手机打电话代码分析
智能手机的打电话功能是由RIL部分来实现的,见下图: 开始分析Android源代码中的RIL部分. 又上图,以及其他相关资料,我得知在Android中有一个叫rild的守护进程.我猜测此进程与电话的拨 ...
- [Angular2 Form] Create Radio Buttons for Angular 2 Forms
Using Radio Buttons in Angular 2 requires a basic understanding of forms as well as how their labels ...