当前位置: 首页 > news >正文

邮件验证登录网站开发app网站

邮件验证登录网站开发,app网站,建设公司网站需要准备什么,关键词林俊杰在线听免费基本用法 ES6 允许使用“箭头”#xff08;#xff09;定义函数。 var f v v; 上面的箭头函数等同于#xff1a; var f function(v) {return v; }; 如果箭头函数不需要参数或需要多个参数#xff0c;就使用一个圆括号代表参数部分。 var f () 5; // 等同于…基本用法 ES6 允许使用“箭头”定义函数。 var f v v;   上面的箭头函数等同于 var f function(v) {return v; };   如果箭头函数不需要参数或需要多个参数就使用一个圆括号代表参数部分。 var f () 5; // 等同于 var f function () { return 5 };var sum (num1, num2) num1 num2; // 等同于 var sum function(num1, num2) {return num1 num2; };   如果箭头函数的代码块部分多于一条语句就要使用大括号将它们括起来并且使用return语句返回。 var sum (num1, num2) { return num1 num2; }   由于大括号被解释为代码块所以如果箭头函数直接返回一个对象必须在对象外面加上括号。 var getTempItem id ({ id: id, name: Temp });   箭头函数可以与变量解构结合使用。 const full ({ first, last }) first last;// 等同于 function full(person) {return person.first person.last; }   箭头函数使得表达更加简洁。 const isEven n n % 2 0; const square n n * n;   上面代码只用了两行就定义了两个简单的工具函数。如果不用箭头函数可能就要占用多行而且还不如现在这样写醒目。 箭头函数的一个用处是简化回调函数。 // 正常函数写法 [1,2,3].map(function (x) {return x * x; });// 箭头函数写法 [1,2,3].map(x x * x);   另一个例子是 // 正常函数写法 var result values.sort(function (a, b) {return a - b; });// 箭头函数写法 var result values.sort((a, b) a - b);   下面是 rest 参数与箭头函数结合的例子。 const numbers (...nums) nums;numbers(1, 2, 3, 4, 5) // [1,2,3,4,5]const headAndTail (head, ...tail) [head, tail];headAndTail(1, 2, 3, 4, 5) // [1,[2,3,4,5]]   使用注意点 箭头函数有几个使用注意点。 1函数体内的this对象就是定义时所在的对象而不是使用时所在的对象。 2不可以当作构造函数也就是说不可以使用new命令否则会抛出一个错误。 3不可以使用arguments对象该对象在函数体内不存在。如果要用可以用 rest 参数代替。 4不可以使用yield命令因此箭头函数不能用作 Generator 函数。 上面四点中第一点尤其值得注意。this对象的指向是可变的但是在箭头函数中它是固定的。 function foo() {setTimeout(() {console.log(id:, this.id);}, 100); }var id 21;foo.call({ id: 42 }); // id: 42   上面代码中setTimeout的参数是一个箭头函数这个箭头函数的定义生效是在foo函数生成时而它的真正执行要等到100毫秒后。如果是普通函数执行时this应该指向全局对象window这时应该输出21。但是箭头函数导致this总是指向函数定义生效时所在的对象本例是{id: 42}所以输出的是42。 箭头函数可以让setTimeout里面的this绑定定义时所在的作用域而不是指向运行时所在的作用域。下面是另一个例子。 function Timer() {this.s1 0;this.s2 0;// 箭头函数setInterval(() this.s1, 1000);// 普通函数setInterval(function () {this.s2;}, 1000); }var timer new Timer();setTimeout(() console.log(s1: , timer.s1), 3100); setTimeout(() console.log(s2: , timer.s2), 3100); // s1: 3 // s2: 0   上面代码中Timer函数内部设置了两个定时器分别使用了箭头函数和普通函数。前者的this绑定定义时所在的作用域即Timer函数后者的this指向运行时所在的作用域即全局对象。所以3100毫秒之后timer.s1被更新了3次而timer.s2一次都没更新。 箭头函数可以让this指向固定化这种特性很有利于封装回调函数。下面是一个例子DOM 事件的回调函数封装在一个对象里面。 var handler {id: 123456,init: function() {document.addEventListener(click,event this.doSomething(event.type), false);},doSomething: function(type) {console.log(Handling type for this.id);} };   上面代码的init方法中使用了箭头函数这导致这个箭头函数里面的this总是指向handler对象。否则回调函数运行时this.doSomething这一行会报错因为此时this指向document对象。 this指向的固定化并不是因为箭头函数内部有绑定this的机制实际原因是箭头函数根本没有自己的this导致内部的this就是外层代码块的this。正是因为它没有this所以也就不能用作构造函数。 所以箭头函数转成 ES5 的代码如下。 // ES6 function foo() {setTimeout(() {console.log(id:, this.id);}, 100); }// ES5 function foo() {var _this this;setTimeout(function () {console.log(id:, _this.id);}, 100); }   上面代码中转换后的ES5版本清楚地说明了箭头函数里面根本没有自己的this而是引用外层的this。 请问下面的代码之中有几个this function foo() {return () {return () {return () {console.log(id:, this.id);};};}; }var f foo.call({id: 1});var t1 f.call({id: 2})()(); // id: 1 var t2 f().call({id: 3})(); // id: 1 var t3 f()().call({id: 4}); // id: 1   上面代码之中只有一个this就是函数foo的this所以t1、t2、t3都输出同样的结果。因为所有的内层函数都是箭头函数都没有自己的this它们的this其实都是最外层foo函数的this。 除了this以下三个变量在箭头函数之中也是不存在的指向外层函数的对应变量arguments、super、new.target。 function foo() {setTimeout(() {console.log(args:, arguments);}, 100); }foo(2, 4, 6, 8) // args: [2, 4, 6, 8]   上面代码中箭头函数内部的变量arguments其实是函数foo的arguments变量。 另外由于箭头函数没有自己的this所以当然也就不能用call()、apply()、bind()这些方法去改变this的指向。 (function() {return [(() this.x).bind({ x: inner })()]; }).call({ x: outer }); // [outer]   上面代码中箭头函数没有自己的this所以bind方法无效内部的this指向外部的this。 长期以来JavaScript 语言的this对象一直是一个令人头痛的问题在对象方法中使用this必须非常小心。箭头函数”绑定”this很大程度上解决了这个困扰。 嵌套的箭头函数 箭头函数内部还可以再使用箭头函数。下面是一个 ES5 语法的多重嵌套函数。 function insert(value) {return {into: function (array) {return {after: function (afterValue) {array.splice(array.indexOf(afterValue) 1, 0, value);return array;}};}}; }insert(2).into([1, 3]).after(1); //[1, 2, 3]   上面这个函数可以使用箭头函数改写。 let insert (value) ({into: (array) ({after: (afterValue) {array.splice(array.indexOf(afterValue) 1, 0, value);return array; }})});insert(2).into([1, 3]).after(1); //[1, 2, 3]   下面是一个部署管道机制pipeline的例子即前一个函数的输出是后一个函数的输入。 const pipeline (...funcs) val funcs.reduce((a, b) b(a), val);const plus1 a a 1; const mult2 a a * 2; const addThenMult pipeline(plus1, mult2);addThenMult(5) // 12   如果觉得上面的写法可读性比较差也可以采用下面的写法。 const plus1 a a 1; const mult2 a a * 2;mult2(plus1(5)) // 12   箭头函数还有一个功能就是可以很方便地改写λ演算。 // λ演算的写法 fix λf.(λx.f(λv.x(x)(v)))(λx.f(λv.x(x)(v)))// ES6的写法 var fix f (x f(v x(x)(v)))(x f(v x(x)(v)));   上面两种写法几乎是一一对应的。由于λ演算对于计算机科学非常重要这使得我们可以用ES6作为替代工具探索计算机科学。   附《ECMAScript 6 入门》http://es6.ruanyifeng.com/转载于:https://www.cnblogs.com/jjdw/p/7412471.html
http://www.huolong8.cn/news/174706/

相关文章:

  • 客户网站开发全流程做网站ps分辨率给多少钱
  • 免费拍卖网站模板做网站开发的女生多吗
  • 企业 网站 推广优惠券怎做网站
  • 站长工具app官方下载电子商务平台建设与运营技术
  • 龙岗公司网站建设个人备案可以做影视网站吗
  • 学做网站培训上海网络建站培训
  • 网上购物网站的设计与实现Wordpress企业主题排行
  • 外贸网站优化软件网站建设捌金手指下拉七
  • 网页设计师学习网站Wordpress图片热点
  • 租用了空间 怎样上传网站程序容城网站建设
  • 做网店有哪些拿货网站顺义手机网站设计
  • 网站开发 net一起来做网站17
  • wordpress企业站主题茶叶营销策划方案
  • 白银网站建设熊掌号网站模块规划
  • seo网站建设培训高端网站制作费用
  • html网站地图怎么做域名注册是什么意思
  • 网站备案是给什么进行备案湖南企业seo优化首选
  • 西安手机网站制作延吉网站建设公司
  • 模拟购物网站开发项目做网站现在好弄么
  • 陕西省建设监理协会网站主页中国制造网外贸平台中文版
  • 如何做公司网站制作go网站开发
  • 做贸易常用的网站动态效果的网站建设技术
  • 用html做音乐网站中国室内装饰网
  • 网站建设与O2O的应用穿山甲广告联盟
  • 单位网站建设情况汇报网站域名如何续费
  • 如何做外贸网站优化推广wordpress 两个用户名
  • ui下载高清素材的网站有哪些杭州龙席网络seo
  • 东莞网站平面设计泉州专门制作网站
  • 建设婚介网站网站建设咨询
  • wordpress会员中心页面seo网站首页推广