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 Select操作大集合
May 26 Javascript
jquery拖动插件(jquery.drag)使用介绍
Jun 18 Javascript
JavaScript动态修改弹出窗口大小的方法
Apr 06 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
Oct 26 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
Oct 26 Javascript
微信小程序进行微信支付的步骤昂述
Dec 01 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
JavaScript实现求最大公共子串的方法
Feb 03 Javascript
JS实现查找数组中对象的属性值是否存在示例
May 24 Javascript
使用layui实现树形结构的方法
Sep 20 Javascript
vue-cli3使用mock数据的方法分析
Mar 16 Javascript
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
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
Python语言的12个基础知识点小结
2014/07/10 Python
python 基础教程之Map使用方法
2017/01/17 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
Python中正则表达式详解
2017/05/17 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
浅析Python函数式编程
2018/10/06 Python
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
硕士研究生自我鉴定范文
2013/12/27 职场文书
中学教师管理制度
2014/01/14 职场文书
工人先锋号申报材料
2014/12/29 职场文书
投资意向协议书
2015/01/29 职场文书
工地食品安全责任书
2015/05/09 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
计算机实训心得体会
2016/01/14 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL