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){ ...
随机推荐
- hdoj 5399 Tpp simple
WA了一下午.... 1WA:T了,因为阶乘没打表所以时间超了.. 2WA,3WA:runtime error,检查的value数组开小了,应该是MAXN.. 4WA.5WA.6WA:改了改对cnt的 ...
- web/jdbc数据库带实例名连接2008
--------------------------数据库带实例名连接2008-------------------------------------<property name=" ...
- CentOS常用查看系统命令
系统 uname -a 查看内核/操作系统/CPU信息head -n 1 /etc/issue 查看操作系统版本cat /proc/cpuinfo 查看C ...
- MVC路由中routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 到底什么意思!
转自:http://blog.csdn.net/lvjin110/article/details/24638913 参考(1) http://www.cnblogs.com/flyfish2012/a ...
- Netty4.x分析(转)
官网定义: netty是一个异步.事件驱动的网络应用框架,用于快速开发可维护的.高性能的服务端和客户端程序. 原理分析 Architecture Overview 网络模型:netty采用了React ...
- 14的路 MySQL的btree索引和hash索引的区别
http://www.cnblogs.com/vicenteforever/articles/1789613.html ash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tr ...
- 转载 C++常用库函数atoi,itoa,strcpy,strcmp的实现
C++常用库函数atoi,itoa,strcpy,strcmp的实现 C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. ...
- 一次JQuery性能优化实战
同事写了段JQuey的代码,在某些机器上,会出现IE假死的性能问题. 我测试了一下代码花费的时间,在我的机器上,会花费600多毫秒,但在某些机器上会花费6秒多(10倍的增长),这样就导致了IE的假死. ...
- Codeforces Round #221 (Div. 1) B. Maximum Submatrix 2 dp排序
B. Maximum Submatrix 2 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset ...
- OSG中找到特定节点的方法(转)
OSG中找到特定节点的方法 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"] 阐述 ...