细说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代码
Aug 13 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
May 23 Javascript
通过js简单实现将一个文本内容转译成加密文本
Oct 22 Javascript
用jquery修复在iframe下的页面锚点失效问题
Aug 22 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
Jun 04 Javascript
Node.js的Web模板引擎ejs的入门使用教程
Jun 06 Javascript
AngularJS基础 ng-model 指令详解及示例代码
Aug 02 Javascript
详解Vue依赖收集引发的问题
Apr 22 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 Javascript
ES6 Symbol在对象中的作用实例分析
Jun 06 Javascript
在vue中使用eslint,配合vscode的操作
Nov 09 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
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
JavaScript中的Array对象使用说明
2011/01/17 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
python实现最长公共子序列
2018/05/22 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
用python实现一个简单的验证码
2020/12/09 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
Linux的文件类型
2012/03/07 面试题
电脑饰品店的创业计划书
2014/01/21 职场文书
机械专业技术员求职信
2014/06/14 职场文书
父亲节活动策划方案
2014/08/24 职场文书
泰山导游词
2015/02/02 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL