细说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的兼容各种浏览器的iframe自适应高度的脚本
Aug 13 Javascript
js实现class样式的修改、添加及删除的方法
Jan 20 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
Feb 14 Javascript
js实现功能比较全面的全选和多选
Mar 02 Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 Javascript
javascript基于定时器实现进度条功能实例
Oct 13 Javascript
深入浅出webpack之externals的使用
Dec 04 Javascript
Vue2.0系列之过滤器的使用
Mar 01 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
Nov 20 jQuery
JS中使用react-tooltip插件实现鼠标悬浮显示框
May 15 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 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
Window下PHP三种运行方式图文详解
2013/06/11 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
javascript学习网址备忘
2007/05/29 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
jQuery的框架介绍
2016/05/11 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
销售冠军获奖感言
2014/02/03 职场文书
初中军训感想300字
2014/03/05 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
少儿励志名言(80句)
2019/08/14 职场文书