细说javascript函数从函数的构成开始


Posted in Javascript onAugust 29, 2013

javascript函数是一个比较奇怪的东西,接触一段时间你就会犯迷糊,弄不明白它到底是什么了。你是否会因为有的javascript函数没有名字而莫名其妙,是否会因为javascript函数的参数没有类型而抓狂,是否为javascript函数以表达式的形态存在而彻底崩溃。正是因为有了这些烦恼才让javascript函数值得我们寻味,我想从函数的构成来细说函数,这听起来像是一句废话,讲任何东西当然是从构成去谈,但是由于javascript函数你确实捉摸不了它的形态,因此这里我是从一个标准函数的构成来细说。

1.函数名
在面向对象语言中,函数一般都有名称,但javascript函数不一定,这类函数称为匿名函数或者函数直接量。它就像是一个表达式,然后这个表达式的左值即可以用来调用函数,也可以存储在变量中传递给其它的函数。它的好处就是不用每次调用的时候创建新的对象。

var f= function (x) {return x*x;}; 
alert( f(6) );

以上例子就会在页面上弹出窗口显示36

2.参数
javascript函数的参数也比较神奇,调用javascript函数时如果填写的参数和函数定义的参数不一致(例如个数不一致),程序不会出错,有时甚至能调用成功,这对于java语言是无法想象的,但javascript函数可以做到。例如上面的例子,我们这样调用:

alert(f(6,7))

结果仍然是36。虽然这样不会出错,但是我们仍然想函数被正确的调用,保证调用时和函数定义的参数数目一致。通过Arguments对象可以获取函数调用者的参数数目。修改上述代码。
var f= function (x) { 
if(arguments.length>1) { 
return "out of range"; 
} else { 
return x*x; 
} 
}; 
alert( f(6,7) );

处理获取函数调用者的参数数目,还可以获取到这些参数的值,将上述代码再进行一番修改:
var f= function (x) { 
if(arguments.length>1) { 
return arguments[0]*arguments[1];

} else { 
return x*x; 
} 
}; 
alert( f(6,7) );

你能猜出结果是多少吗?对,是42。
Javascript 相关文章推荐
JavaScript中伪协议 javascript:使用探讨
Jul 18 Javascript
javascript 自定义回调函数示例代码
Sep 26 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
AngularJS过滤器详解及示例代码
Aug 16 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
Oct 05 Javascript
vue实现图片加载完成前的loading组件方法
Feb 05 Javascript
实战node静态文件服务器的示例代码
Mar 08 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
Feb 22 Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 Javascript
js实现全选和全不选功能
Jul 28 Javascript
微信小程序抽奖组件的使用步骤
Jan 11 Javascript
密码框显示提示文字jquery示例
Aug 29 #Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
Aug 29 #Javascript
js中的数组Array定义与sort方法使用示例
Aug 29 #Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
Aug 29 #Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 #Javascript
JS中图片缓冲loading技术的实例代码
Aug 29 #Javascript
js中substring和substr的详细介绍与用法
Aug 29 #Javascript
You might like
cmd下运行php脚本
2008/11/25 PHP
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
php实现算术验证码功能
2018/12/05 PHP
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
应届生.NET方向面试题
2015/05/23 面试题
抗洪抢险事迹材料
2014/05/06 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
大学生学期个人总结
2015/02/12 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL