细说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选择器(常用选择器说明)
Sep 28 Javascript
javascript实用小函数使用介绍
Nov 11 Javascript
js出生日期 年月日级联菜单示例代码
Jan 10 Javascript
JavaScript中实现异步编程模式的4种方法
Sep 24 Javascript
jQuery中parents()方法用法实例
Jan 07 Javascript
省市区三级联动下拉框菜单javascript版
Aug 11 Javascript
Bootstrap3制作自己的导航栏
May 12 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
如何编写jquery插件
Mar 29 jQuery
vue-router传参用法详解
Jan 19 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 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
如何给phpadmin一个保护
2006/10/09 PHP
php基础学习之变量的使用
2011/06/09 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
JS启动应用程序的一个简单例子
2008/05/11 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
js获取Get值的方法
2016/09/29 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
javascript数据类型详解
2017/02/07 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
js实现随机8位验证码
2020/07/24 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
vue实现整屏滚动切换
2020/06/29 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Zabbix实现微信报警功能
2016/10/09 Python
python递归全排列实现方法
2018/08/18 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
Exception类的常用方法
2012/06/16 面试题
优秀应届生推荐信
2013/11/09 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
MySQL 5.7常见数据类型
2021/07/15 MySQL
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript
Javascript webpack动态import
2022/04/19 Javascript