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 相关文章推荐
javascript 获取url参数和script标签中获取url参数函数代码
Jan 22 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
Oct 22 Javascript
一个网页标题title的闪动提示效果实现思路
Mar 22 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
Sep 29 Javascript
node.js中的events.emitter.listeners方法使用说明
Dec 10 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
Aug 01 Javascript
前端编码规范(3)JavaScript 开发规范
Jan 21 Javascript
jQuery is not defined 错误原因与解决方法小结
Mar 19 Javascript
three.js实现炫酷的全景3D重力感应
Dec 30 Javascript
详解Javascript实践中的命令模式
May 05 Javascript
Vue和Flask通信的实现
May 19 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
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
python文件写入实例分析
2015/04/08 Python
python求最大值最小值方法总结
2019/06/25 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
解决c++调用python中文乱码问题
2020/07/29 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
班主任新年寄语
2014/04/04 职场文书
父母对孩子的寄语
2014/04/09 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
民事和解协议书格式
2014/11/29 职场文书
介绍信的格式
2015/01/30 职场文书
七年级上册生物的课件
2019/08/07 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js
golang语言指针操作
2022/04/14 Golang