细说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 相关文章推荐
把html页面的部分内容保存成新的html文件的jquery代码
Nov 12 Javascript
WEB高性能开发之疯狂的HTML压缩
Jun 19 Javascript
jquery获取radio值(单选组radio)
Oct 16 Javascript
jQuery中eq()方法用法实例
Jan 05 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 Javascript
js本地图片预览实现代码
Oct 09 Javascript
工厂模式在JS中的实践
Jan 18 Javascript
layui select动态添加option的实例
Mar 07 Javascript
vue 组件中slot插口的具体用法
Apr 03 Javascript
JavaScript Event Loop相关原理解析
Jun 10 Javascript
vue中使用腾讯云Im的示例
Oct 23 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
Jan 07 Vue.js
密码框显示提示文字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
PHP生成静态页
2006/11/25 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
javascript中的float运算精度实例分析
2010/08/21 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
Python collections模块实例讲解
2014/04/07 Python
在Django中创建第一个静态视图
2015/07/15 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
计算机本科生自荐信
2013/10/15 职场文书
2014庆六一活动方案
2014/03/02 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
实习计划书范文
2015/01/16 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
周末问候语大全
2015/11/10 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书