Javascript中的方法和匿名方法实例详解


Posted in Javascript onJune 13, 2015

本文实例讲述了Javascript中的方法和匿名方法。分享给大家供大家参考。具体分析如下:

Javascript方法(函数)

声明函数

以function开头,后跟函数名,与C#、java不同,Javascript不需要声明返回值类型、参数类型。没有返回值就是undefined。

举个例子更清楚: 
无参数无返回值的方法:

function f1(){
alert('这是一个方法');
}
f1();//调用方法

无参数有返回值的方法:

function f2(){
return 100;
}
var result=f2();//声明一个变量,接收f1()中的返回值
alert(result);//100

有参数有返回值的方法:

function f3(n1,n2){
return n1+n2;
}
var result=f3(20,30);
alert(result);//50

注意1:

先看例子:

function f1(){
  alert('这是一个方法'); 
}
alert(f1());//弹出”这是一个方法”后,还会显示undefined

原因:js中,变量没有赋值,就是undefined;该栗中f1()没有返回值,那么就是一个未知的值(undefined),这里未知的变量放入alert(),当然弹出的就是undefined

注意2:

alert(f1);//不写括号,会将f1整个代码以字符串形式显示出来:
function f1(){ 
alert('这是一个方法'); 
}

JavaScript中没有方法重载

只调用最新定义的方法:

function f1(n1,n2){ 
alert(n1+n2); 
} 
function f1(n1,n2){ 
alert(n1-n2); 
} 
f1(10,2);//8

结论:无论在哪里调用,都只调用最新定义的方法。

注意:数字+undefined=undefined

function f1(n1,n2,n3){ 
alert(n1-n2+n3); 
} 
f1(10,2);
//NaN,因为没有给n3传值,n3就是undefined,
//数字加上undefined还是undefined

以上结论:Javascript中没有方法重载

定义方法时注意:

自定义函数名不要和内置方法重名:
不要和js内置、dom内置方法重名,比如selectAll、focus等函数名不要用。

不要与系统函数重名。(在单击事件中调用自己定义的focus方法,有问题。与系统的focus()方法重名了)

书写规则括号注意:

一般在js中编写大括号都是直接跟在后面

function f1(){ 
return 
{ 
age:100}; 
} 
var s=f1(); 
alert(s.age);
//undefined。s结果是undefined,undefined.age必然还是undefined

匿名方法(用的非常多)

为什么推荐用匿名方法?

1、有一个1.js中有个方法function aa(){alert{'我挺帅了'}}

2、有一个2.js中有个方法function aa(){alert{'我越来越帅了'}}

3、将1.js和2.js依次导入到index.html中,调用aa();结果显示:我越来越帅了。

结论:2.js中的aa()方法会覆盖1.js中的aa()

怎么办?不再指定方法名,使用匿名方法

先看一个将匿名方法赋给变量例子:

var ff=function(n1,n2){ 
return n1+n2; 
}; 
alert(ff(20,30));//50

一行写完匿名方法:

(function (n1,n2){alert(n1+n2);})(9,9);

小案例:1:

var x=1; 
var y=0; 
var z=0; 
var add=function (n){n=n+1;return n}; 
y=add(x);//结果是2,先调用上面add 
add=function(n){n=n+3;return n;}; 
z=add(x);//结果是4,调用上面临近的这个add 
alert(y+','+z);//2,4

小案例2:

function aa() 
{ 
  alert("aaa"); 
  return function(){alert("bbb");}; 
} 
alert(aa);//不写括号,会将aa方法的整个代码显示出来 
alert(aa());//aaa,function(){alert("bbb");}; aaa就不解释了,后面那一串是作为aa()的返回值显示 
alert(aa()());//aaa,bbb,undefined 
//下面分解上面这句进行解释 
var s=aa();//aaa 
alert(s());//s()就是function(){alert("bbb");};首先弹出bbb,其次该方法没有返回值,故弹出undefined

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
准确获得页面、窗口高度及宽度的JS
Nov 26 Javascript
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
Mar 24 Javascript
javascript 面向对象,实现namespace,class,继承,重载
Oct 29 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
Jquery结合HTML5实现文件上传
Jun 25 Javascript
Bootstrap表格和栅格分页实例详解
May 20 Javascript
AngularJS 与百度地图的结合实例
Oct 20 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 Javascript
js+css实现全屏侧边栏
Jun 16 Javascript
vue.js+element 默认提示中英文操作
Nov 11 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
jquery实现简单的自动播放幻灯片效果
Jun 13 #Javascript
jquery实现简单手风琴菜单效果实例
Jun 13 #Javascript
jQuery实现的五子棋游戏实例
Jun 13 #Javascript
JavaScript合并两个数组并去除重复项的方法
Jun 13 #Javascript
JQuery自动触发事件的方法
Jun 13 #Javascript
JQuery中DOM实现事件移除的方法
Jun 13 #Javascript
JQuery中DOM事件冒泡实例分析
Jun 13 #Javascript
You might like
cache_lite试用
2007/02/14 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
php调用shell的方法
2014/11/05 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
python实现提取百度搜索结果的方法
2015/05/19 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
渡河少年教学反思
2014/02/12 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
优秀员工评优方案
2014/06/13 职场文书
幼师大班个人总结
2015/02/13 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
医院党建工作总结2015
2015/05/26 职场文书
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript
python通过新建环境安装tfx的问题
2022/05/20 Python