细说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 相关文章推荐
js获取页面description的方法
May 21 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
JS与jQ读取xml文件的方法
Dec 08 Javascript
简单实现js悬浮导航效果
Feb 05 Javascript
详解angular ui-grid之过滤器设置
Jun 07 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
Vue代码分割懒加载的实现方法
Nov 23 Javascript
Vue实现web分页组件详解
Nov 28 Javascript
js根据json数据中的某一个属性来给数据分组的方法
Oct 08 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 Javascript
JavaScript中reduce()的用法
May 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
PHP安装问题
2006/10/09 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
2014过年倒计时示例
2014/01/31 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
php HTML无刷新提交表单
2016/04/05 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
JS实现div居中示例
2014/04/17 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
Python docx库用法示例分析
2019/02/16 Python
python3.7 sys模块的具体使用
2019/07/22 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
优秀乡村医生先进事迹材料
2014/08/23 职场文书
迎国庆演讲稿
2014/09/05 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
详解MySQL的半同步
2021/04/22 MySQL