细说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对象的property和prototype是这样一种关系
Mar 24 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
Jun 12 Javascript
Json对象替换字符串占位符实现代码
Nov 17 Javascript
javaScript同意等待代码实现心得
Jan 01 Javascript
图解Sublime Text3使用技巧
Dec 21 Javascript
javascript原型继承工作原理和实例详解
Apr 07 Javascript
JS正则匹配中文的方法示例
Jan 06 Javascript
微信小程序 video详解及简单实例
Jan 16 Javascript
Vue页面骨架屏的实现方法
May 22 Javascript
vue在手机中通过本机IP地址访问webApp的方法
Aug 15 Javascript
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 Javascript
js实现页面图片消除效果
Mar 24 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简单日历实现方法
2016/07/20 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
js静态作用域的功能。
2006/12/25 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
Python抽象类的新写法
2015/06/18 Python
Python实现文件复制删除
2016/04/19 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
python实现简单http服务器功能
2018/09/17 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
文秘专业毕业生就业推荐信
2013/11/08 职场文书
财务与信息服务专业推荐信
2013/11/28 职场文书
家庭贫困证明
2015/06/16 职场文书