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的更多相关文章

  1. JavaScript笔记 Function

    在JavaScript中方法由两部分组成: 方法名和方法体. JavaScript中的方法跟其他传统面向对象语言不同,它跟普通的变量没有区别,唯一不同点是它是Function对象,因此它会有一些Fun ...

  2. (转)深入理解javascript的function

    原文:http://www.cnblogs.com/sharpxiajun/archive/2011/09/16/2179323.html javascript笔记:深入理解javascript的fu ...

  3. javascript的Function 和其 Arguments

    http://shengren-wang.iteye.com/blog/1343256 javascript的Function属性:1.Arguments对象2.caller 对调用单前函数的Func ...

  4. JavaScript之Function函数深入总结

    整理了JavaScript中函数Function的各种,感觉函数就是一大对象啊,各种知识点都能牵扯进来,不单单是 Function 这个本身原生的引用类型的各种用法,还包含执行环境,作用域,闭包,上下 ...

  5. JavaScript Nested Function 的时空和身份属性

    JavaScript 的function 不仅仅是一等公民,简直就是特殊公民.它有许多独特的特征: 1) 它是object,可以存储,传递,附加属性. 2) 它可以有lexical closure, ...

  6. Javascript中Function,Object,Prototypes,__proto__等概念详解

    http://anykoro.sinaapp.com/2012/01/31/javascript%E4%B8%ADfunctionobjectprototypes__proto__%E7%AD%89% ...

  7. javascript 之Function对象的apply(),call(),bind(),方法和arguments,caller,length属性

    注:这篇文章原文:http://www.jb51.net/article/30883.htm 自己作为学习,重新写写. 一.写在前面的话 前端javascript编程还只是略懂皮毛,DOM知道一点,j ...

  8. 转载 javascript中(function($){...})(jQuery)写法是什么意思

    javascript中(function($){...})(jQuery)写法是什么意思   这里实际上是匿名函数function(arg){...}这就定义了一个匿名函数,参数为arg 而调用函数 ...

  9. JavaScript 之 function函数及参数arguments

    JavaScript用function关键字声明函数,可以用return返回值,也可以没有返回值. 建议:要么统一有返回值,要么统一都没有返回值,这样调试代码方便. 函数定义格式: function ...

  10. javascript 中function(){},new function(),new Function(),Function 摘录

    函数是JavaScript中很重要的一个语言元素,并且提供了一个function关键字和内置对象Function,下面是其可能的用法和它们之间的关系. function使用方式 var foo01 = ...

随机推荐

  1. uboot如何启动内核

    2.7.1.uboot和内核到底是什么 2.7.1.1.uboot是一个裸机程序 (1)uboot的本质就是一个复杂点的裸机程序.和我们在ARM裸机全集中学习的每一个裸机程序并没有本质区别. 2.7. ...

  2. 033.SAP上查看IDOC接口,PI接口查不到的日志记录,可能在IDOC接口日志里面

    01. SAP系统发料之后,数据没有传输到条码系统,同事也没有任何bc01的日志,这是就要考虑是不是在IDOC接口了,输入事务代码WE02或者WE05 02.双击查看内容 03.点开就能看到详细内容了 ...

  3. 如何让你的学术Essay写作看起来更高级?

    学术风格不仅是使用某些特定的词汇或者特定的表达方式.学术风格还会涉及到你的思考方式.推理方式以及你如何利用某个领域内已知的发现.学术风格是英国大学学习的核心.所以在平时的学习中,英国环球论文小编建议大 ...

  4. P 1008 说反话

    转跳点:

  5. POJ1703 && POJ2942 &&POJ 1182 并查集 这个做法挺巧妙

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37242   Accepted: ...

  6. Postman配置Pre-request scripts预请求对请求进行AES加密

    1.首先,Postman的Pre-request scripts页面右边已经提供了一些模板,这些模板可以设置变量与环境变量,并使用双大括号对变量进行引用 {{info}} 2.对所有POST请求都进行 ...

  7. JS - 使 canvas 背景透明

    canvas = document.getElementById('canvas1'); var context = canvas.getContext('2d');context.fillStyle ...

  8. MongoDB 3.2 升级至 3.4.6

    MongoDB 升级测试步骤:1.MongoDB版本升级顺序3.2->3.4->3.6->4.0 不能跨版本升级2.升级到3.4后,您不能降级到3.2.7或更早版本.您只能降级到3. ...

  9. Ubuntu跨版本安装软件

    更新到Ubuntu 19.10之后,源里的Goldendict就会不时的崩溃,让我十分心累.过了这么长时间也一直没有更新,估计在20.04之前是不会更新了.这段时间因为疫情不能出门,正好看看这个问题, ...

  10. 利用 Python 破解 ZIP 或 RAR 文件密码

    我们经常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用.想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道.本文将会利用 P ...