细说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 相关文章推荐
window.ActiveXObject使用说明
Nov 08 Javascript
js+css实现增加表单可用性之提示文字
Jun 03 Javascript
JavaScript插件化开发教程 (三)
Jan 27 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
JavaScript实现网页加载进度条代码超简单
Sep 21 Javascript
易被忽视的js事件问题总结
May 14 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
May 25 Javascript
angularjs项目的页面跳转如何实现(5种方法)
May 25 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
Aug 17 Javascript
VueCli3.0中集成MockApi的方法示例
Jul 05 Javascript
Vue实现购物车实例代码两则
May 30 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
Http 1.1 Etag 与 Last-Modified提高php效率
2008/01/10 PHP
php object转数组示例
2014/01/15 PHP
asp.net和php的区别点总结
2019/10/10 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
施工人员岗位职责
2013/12/12 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
普通党员整改措施
2014/10/24 职场文书
单位介绍信格式
2015/01/31 职场文书
安全教育的主题班会
2015/08/13 职场文书
六年级作文之关于梦
2019/10/22 职场文书
python实现高效的遗传算法
2021/04/07 Python
mysql主从复制的实现步骤
2021/10/24 MySQL
MongoDB数据库之添删改查
2022/04/26 MongoDB