JS定义函数的几种常用方法小结


Posted in Javascript onMay 23, 2019

本文实例讲述了JS定义函数的几种常用方法。分享给大家供大家参考,具体如下:

在 JavaScript 语言里,函数是一种对象,所以可以说函数是 JavaScript 里的一等公民(first-class citizens)。

之前我们这样定义过一个函数:

function greet(greeting, name) {
 return `${greeting}, ${name}`
}

因为在 JavaScript 里面是对象(object),所以它会有一些属性还有方法。比如 name 属性是函数的名字,length 属性指的是函数里面有多少个必须要传递的参数。比如访问上面定义的这个函数里的两个属性:

greet.name
// 输出 greet
greet.length
// 输出 2,表示有两个参数

函数都是 Function 的实例,所以你可以访问 Function 上定义的属性:name,length,可以使用方法:apply(),call()。可以这样证明:

greet instanceof Function
// 返回 'true'

函数表达式

函数是对象,也可以说函数是一个值,因为在 JavaScript 里面,它跟其它类型的值是一样的,比如字符串,数字。这就可以让我们使用函数表达式的方法来定义函数,也就是定义一个匿名函数(anonymous function),再把它交给一个变量。像这样:

var greet = function (greeting, name) {
 return `${greeting}, ${name}`
}

Lambda 表达式

ES6 可以让我们用 Lambda 表达式,也就是箭头函数(fat arrow function),看起来像这样:

var greet = (greeting, name) => {
 return `${greeting}, ${name}`
}

上面这个函数的主体部分只有一行,就是 return 了一个字符串,所以我们可以让它更简洁一些:

var greet = (greeting, name) => `${greeting}, ${name}`

箭头右边的东西会自动被返回(return)。

对象里的方法

如果有一个函数是在一个对象里,一般我们称这种函数是对象的一个方法(method)。

试一下:

var obj = {
 greet: function (greeting, name) {
  return `${greeting}, ${name}`
 }
}

ES6 可以让我们这样为对象定义方法:

var obj = {
 greet (greeting, name) {
  return `${greeting}, ${name}`
 }
}

上面定义了一个名字是 obj 的对象,在它里面添加了一个叫 greet 的方法。要使用这个方法可以这样:

obj.greet('hello', ' my name is X ')
// 返回 “ hello, my name is X ”

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
巧妙破除网页右键禁用的十大绝招
Aug 12 Javascript
JavaScript 特殊字符
Apr 05 Javascript
大家未必知道的Js技巧收藏
Apr 07 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
Mar 05 Javascript
jquery实现垂直和水平菜单导航栏
Aug 27 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
Apr 03 jQuery
Node.js实现文件上传的示例
Jun 28 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
Aug 16 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
Dec 27 Javascript
vue-test-utils初使用详解
May 23 #Javascript
了解前端理论:rscss和rsjs
May 23 #Javascript
微信小程序使用字体图标的方法
May 23 #Javascript
个人小程序接入支付解决方案
May 23 #Javascript
一篇文章介绍redux、react-redux、redux-saga总结
May 23 #Javascript
微信小程序上传图片到php服务器的方法
May 23 #Javascript
React精髓!一篇全概括小结(急速)
May 23 #Javascript
You might like
Zend引擎的发展 [15]
2006/10/09 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
《Python学习手册》学习总结
2018/01/17 Python
python web基础之加载静态文件实例
2018/03/20 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
兼职学生的自我评价
2013/11/24 职场文书
后勤主管岗位职责
2014/03/01 职场文书
房屋租赁协议书
2014/04/10 职场文书
财务工作检讨书
2014/10/29 职场文书
汽车转让协议书范本
2014/12/07 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
小学生作文评语集锦
2014/12/25 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
Golang 编译成DLL文件的操作
2021/05/06 Golang