细说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 相关文章推荐
jQuery EasyUI API 中文文档 - NumberBox数字框
Oct 13 Javascript
javascript+xml实现简单图片轮换(只支持IE)
Dec 23 Javascript
js实现字符串和数组之间相互转换操作
Jan 12 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
Jun 07 Javascript
js运动事件函数详解
Oct 21 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
利用 spin.js 生成等待效果(js 等待效果)
Jun 25 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
Jul 10 Javascript
浅谈vue,angular,react数据双向绑定原理分析
Nov 28 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 jQuery
微信小程序表单验证WxValidate的使用
Nov 27 Javascript
分享几个JavaScript运算符的使用技巧
Apr 24 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中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
node.js中的require使用详解
2014/12/15 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
Python实现远程调用MetaSploit的方法
2014/08/22 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
python程序需要编译吗
2020/06/19 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
Java程序开发中如何应用线程
2016/03/03 面试题
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
甜品店的创业计划书范文
2014/01/02 职场文书
运动会领导邀请函
2014/02/05 职场文书
自主招生学校推荐信
2014/09/26 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
三好学生竞选稿
2015/11/21 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL
python可视化之颜色映射详解
2021/09/15 Python
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL