细说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获取隐藏dom的宽高 具体实现
Jul 14 Javascript
MyEclipse取消验证Js的两种方法
Nov 14 Javascript
单元选择合并变色示例代码
May 26 Javascript
在myeclipse中如何加入jquery代码提示功能
Jun 03 Javascript
JavaScript立即执行函数的三种不同写法
Sep 05 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
js实现文字闪烁特效的方法
Dec 17 Javascript
AngularJS 表单验证手机号的实例(非必填)
Nov 12 Javascript
vue 项目中使用Loading组件的示例代码
Aug 31 Javascript
浅谈Angular 观察者模式理解
Nov 01 Javascript
JS 4个超级实用的小技巧 提升开发效率
Oct 05 Javascript
uniapp 微信小程序 自定义tabBar 导航
Apr 22 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
php实现求相对时间函数
2015/06/15 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
Vue header组件开发详解
2018/01/26 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python获取远程文件大小的函数代码分享
2014/05/13 Python
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Python爬豆瓣电影实例
2018/02/23 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
会计工作决心书
2014/03/11 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL