细说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 获取json数据实现代码
Apr 27 Javascript
50个比较实用jQuery代码段
Sep 18 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
May 04 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
Mar 04 Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 Javascript
基于JavaScript实现自动更新倒计时效果
Dec 19 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 Javascript
BootStrap 导航条实例代码
May 18 Javascript
轻松理解vue的双向数据绑定问题
Oct 30 Javascript
详解Vue路由钩子及应用场景(小结)
Nov 07 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
javascript实现前端成语点击验证优化
Jun 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
微信支付开发交易通知实例
2016/07/12 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
js 文件引入实现代码
2010/04/23 Javascript
Js获取事件对象代码
2010/08/05 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
HTML的select控件美化
2017/03/27 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
javascript History对象原理解析
2020/02/17 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python设计模式之中介模式简单示例
2018/01/09 Python
python对excel文档去重及求和的实例
2018/04/18 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
《中华少年》教学反思
2014/02/15 职场文书
上课打牌的检讨书
2014/02/15 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
企业管理标语
2014/06/10 职场文书
文明旅游倡议书
2015/04/28 职场文书
小鞋子观后感
2015/06/05 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
JS函数式编程实现XDM一
2022/06/16 Javascript