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 读取图片文件的大小
Jun 25 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
May 03 Javascript
基于JQuery的列表拖动排序实现代码
Oct 01 Javascript
用Javascript获取页面元素的具体位置
Dec 09 Javascript
angularjs中的e2e测试实例
Dec 06 Javascript
全系IE支持Bootstrap的解决方法
Oct 19 Javascript
node.js cookie-parser之parser.js
Jun 06 Javascript
发布Angular应用至生产环境的方法
Dec 10 Javascript
JavaScript实现拖拽盒子效果
Feb 06 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
iview实现动态表单和自定义验证时间段重叠
Jan 10 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
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
读jQuery之五(取DOM元素)
2011/06/20 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
Python实现队列的方法
2015/05/26 Python
Django如何自定义分页
2018/09/25 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python 实现矩阵填充0的例子
2019/11/29 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
两道JAVA笔试题
2016/09/14 面试题
连锁经营管理专业大学生求职信
2013/10/30 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
亮化工程实施方案
2014/03/17 职场文书
机关单位动员会主持词
2014/03/20 职场文书
创先争优活动心得体会
2014/09/04 职场文书
工地材料员岗位职责
2015/04/11 职场文书