JavaScript 之 Function
JavaScript function 语句定义和用法:
function 语句用于声明一个函数。
函数声明后,我们可以在需要的时候调用。
在 JavaScript 中,函数是对象,函数也有属性和方法。
函数也可以通过表达式定义。
1、Function*
function* 这种声明方式(function关键字后跟一个星号)会定义一个生成器函数
(generator function),它返回一个 Generator 对象。
其语法为:
function* name([param[, param[, ... param]]]) { statements }
name 函数名
param 要传递给函数的一个参数的名称,一个函数最多可以有255个参数。
statements 普通JS语句。
例子:
function* fn() {
console.log(1);
//暂停!
yield;
//调用next方法继续执行
console.log(2);
}
var iter = fn();
iter.next(); //
iter.next(); //
1、函数生成器特点是函数名前面有一个‘*’
2、通过调用函数生成一个控制器
3、调用next()方法开始执行函数
4、遇到yield函数将暂停
5、再次调用next()继续执行函数
2、Arrowfuction
箭头函数表达式的语法比函数表达式更短,并且没有自己的this,arguments,super或 new.target。
这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数。
基础语法
(参数1, 参数2, …, 参数N) => { 函数声明 }
(参数1, 参数2, …, 参数N) => 表达式(单一)
//相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }
// 当只有一个参数时,圆括号是可选的:
(单一参数) => {函数声明}
单一参数 => {函数声明}
// 没有参数的函数应该写成一对圆括号。
() => {函数声明}
它的定义用的就是一个箭头:
x => x * x
上面的箭头函数相当于:
function (x) { return x * x; }
不会用到关键字‘function’
箭头函数与普通函数的区别:
a、构造函数词法上的差异:箭头函数拥有:arguments, super, this 和 new.target。
b、由于箭头函数没有 [[Construct]] 内部方法,因此,它将不能用作构造函数。如果使用了 new 关键字创建新的函数,则会抛出错误。
3、constructor vs. dodaration vs. expression
构造函数 表达式 实例化
1、 构造函数:
在js中本质上不存在构造函数,只存在函数的构造调用。
如果一个函数被new调用了,那么我们就可以称被调用的那个函数是构造函数.。
代码:
//Foo是构造函数,而且是自定义的构造函数
function foo(name,age){
this.name=name;
this.age=age;
// 构造函数的最后一行一般都会有return this
// return this;
2、函数实例化:
//p是构造函数Person的实例对象。
var p = new Person();
p.name="damu";
3、函数表达式
function 关键字可以用来在一个表达式中定义一个函数。
var getName = function () {
alert (4);
};
4、Scop Closure
scope(作用域)closure(闭包)
什么是域?
在JavaScript里,域指的是代码当前的上下文语境。域可以是公共定义的,也可以是本地定义的。
闭包:
闭包和词法作用域非常相近。一个关于闭包如何工作的更好或者更实际的例子就是返回一个函数的引用。
我们可以返回域中的东西,使得它们可以被其父域所用。
当你在函数里声明一个变量时,你只能在函数内访问。这些变量的作用域就被限制在函数里了。
如果你在一个函数内又定义了内部函数,那么这个内部函数就被称作闭包。它仍可以访问外部函数的作用域。
-------------------------
部分内容摘自:
https://blog.csdn.net/TDCQZD/article/details/81916103
https://www.cnblogs.com/front-Thinking/p/4317020.html
JavaScript 之 Function的更多相关文章
- JavaScript笔记 Function
在JavaScript中方法由两部分组成: 方法名和方法体. JavaScript中的方法跟其他传统面向对象语言不同,它跟普通的变量没有区别,唯一不同点是它是Function对象,因此它会有一些Fun ...
- (转)深入理解javascript的function
原文:http://www.cnblogs.com/sharpxiajun/archive/2011/09/16/2179323.html javascript笔记:深入理解javascript的fu ...
- javascript的Function 和其 Arguments
http://shengren-wang.iteye.com/blog/1343256 javascript的Function属性:1.Arguments对象2.caller 对调用单前函数的Func ...
- JavaScript之Function函数深入总结
整理了JavaScript中函数Function的各种,感觉函数就是一大对象啊,各种知识点都能牵扯进来,不单单是 Function 这个本身原生的引用类型的各种用法,还包含执行环境,作用域,闭包,上下 ...
- JavaScript Nested Function 的时空和身份属性
JavaScript 的function 不仅仅是一等公民,简直就是特殊公民.它有许多独特的特征: 1) 它是object,可以存储,传递,附加属性. 2) 它可以有lexical closure, ...
- Javascript中Function,Object,Prototypes,__proto__等概念详解
http://anykoro.sinaapp.com/2012/01/31/javascript%E4%B8%ADfunctionobjectprototypes__proto__%E7%AD%89% ...
- javascript 之Function对象的apply(),call(),bind(),方法和arguments,caller,length属性
注:这篇文章原文:http://www.jb51.net/article/30883.htm 自己作为学习,重新写写. 一.写在前面的话 前端javascript编程还只是略懂皮毛,DOM知道一点,j ...
- 转载 javascript中(function($){...})(jQuery)写法是什么意思
javascript中(function($){...})(jQuery)写法是什么意思 这里实际上是匿名函数function(arg){...}这就定义了一个匿名函数,参数为arg 而调用函数 ...
- JavaScript 之 function函数及参数arguments
JavaScript用function关键字声明函数,可以用return返回值,也可以没有返回值. 建议:要么统一有返回值,要么统一都没有返回值,这样调试代码方便. 函数定义格式: function ...
- javascript 中function(){},new function(),new Function(),Function 摘录
函数是JavaScript中很重要的一个语言元素,并且提供了一个function关键字和内置对象Function,下面是其可能的用法和它们之间的关系. function使用方式 var foo01 = ...
随机推荐
- Day5 - D - Conscription POJ - 3723
Windy has a country, and he wants to build an army to protect his country. He has picked up N girls ...
- 019、MySQL取本季度开始时间和本季度结束时间
SELECT QUARTER ( adddate( dy, ) ) QTR, date_add( dy, INTERVAL MONTH ) Q_start, adddate( dy, ) Q_end ...
- HDU 4960 Handling the past 2014 多校9 线段树
首先确定的基本思想是按时间离散化后来建线段树,对于每个操作插入到相应的时间点上 但是难就难在那个pop操作,我之前对pop操作的处理是找到离他最近的那个点删掉,但是这样对于后面的peak操作,如果时间 ...
- mysql 数据库函数入门
- JuJu团队12月4号工作汇报
JuJu团队12月4号工作汇报 JuJu Scrum 团队成员 今日工作 剩余任务 困难 于达 调试 无 无 婷婷 和陈灿一起提升acc 无 无 恩升 纠正chunk evaluator 无 无 ...
- nginx安全参数
Strict-Transport-Security Strict-Transport-Security,简称 HSTS.该响应头用于标识浏览器用 HTTPS 替代 HTTP 的方式去访问目标站点. 我 ...
- Golang的标准命令简述
Golang的标准命令简述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Go本身包含了大量用于处理Go程序的命令和工具.go命令就是其中最常见的一个,它有许多子命令,接下来就跟随 ...
- CentOS 6.x 重置root 密码
1.重启,进入启动界面,快速按e,进入GNU GRUB界面. 2.选择第二项,按e,进行编辑. 3.在末尾输入1或single,回车,返回上一界面,还是选第二项,按b,进入单用户模式. 此时输入命令 ...
- Exchange 导出用户邮箱
应用场景: 1.需要把某个用户的邮箱内容全部导出来,提供给审计或监察部门. 2.跨平台的迁移,从第三方的邮件系统迁移到exchange.其中一种迁移方式就是把用户批量导出为PST,然后在exchang ...
- No 'Access-Control-Allow-Origin' header is present on the requested resource——Web Api跨域问题
最近使用C#写了一个简单的web api项目,在使用项目中的.cshtml文档测试的时候没有任何问题,但是在外部HBuilder上面编写.html通过Ajax调用web api路径时报错: No 'A ...