细说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 相关文章推荐
认识延迟时间为0的setTimeout
May 16 Javascript
jQuery学习笔记之2个小技巧
Jan 19 Javascript
JavaScript中的普通函数与构造函数比较
Apr 07 Javascript
使用jquery.form.js实现图片上传的方法
May 05 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
Apr 03 jQuery
Vue.js仿Metronic高级表格(二)数据渲染
Apr 19 Javascript
Vue中封装input组件的实例详解
Oct 17 Javascript
JS抛物线动画实例制作
Feb 24 Javascript
webpack公共组件引用路径简化小技巧
Jun 15 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
Jun 26 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
Dec 28 Javascript
vue实现设置载入动画和初始化页面动画效果
Oct 28 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
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
php 使用post,get的一种简洁方式
2010/04/25 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
python读写文件操作示例程序
2013/12/02 Python
wxPython中文教程入门实例
2014/06/09 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
python安装scipy的方法步骤
2019/06/26 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
医学生实习自我鉴定
2013/09/27 职场文书
党员思想汇报范文
2013/12/30 职场文书
施工安全汇报材料
2014/08/17 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
教师个人培训总结
2015/02/11 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
Spring实现内置监听器
2021/07/09 Java/Android