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

网站建设学什么语言/扬州seo

网站建设学什么语言,扬州seo,wordpress step2 空白,建设网站的结束语前言 胖箭头函数(Fat arrow functions),又称箭头函数,是一个来自ECMAScript 2015(又称ES6)的全新特性。有传闻说,箭头函数的语法>,是受到了CoffeeScript 的影响,并且它…

前言

胖箭头函数(Fat arrow functions),又称箭头函数,是一个来自ECMAScript 2015(又称ES6)的全新特性。有传闻说,箭头函数的语法=>,是受到了CoffeeScript 的影响,并且它与CoffeeScript中的=>语法一样,共享this上下文。

箭头函数的产生,主要由两个目的:更简洁的语法和与父作用域共享关键字this。接下来,让我们来看几个详细的例子。

新的函数语法

传统的JavaScript函数语法并没有提供任何的灵活性,每一次你需要定义一个函数时,你都必须输入function () {}CoffeeScript如今之所以那么火,有一个不可忽略的原因就是它有更简洁的函数语法。更简洁的函数语法在有大量回调函数的场景下好处特别明显,让我们从一个Promise链的例子看起:

复制代码
function getVerifiedToken(selector) {return getUsers(selector).then(function (users) { return users[0]; }).then(verifyUser).then(function (user, verifiedToken) { return verifiedToken; }).catch(function (err) { log(err.stack); });
}
复制代码

以下是使用新的箭头函数语法进行重构后的代码:

复制代码
function getVerifiedToken(selector) {return getUsers(selector).then(users => users[0]).then(verifyUser).then((user, verifiedToken) => verifiedToken).catch(err => log(err.stack));
}
复制代码

以下是值得注意的几个要点:

  • function{}都消失了,所有的回调函数都只出现在了一行里。

  • 当只有一个参数时,()也消失了(rest参数是一个例外,如(...args) => ...)。

  • {}消失后,return关键字也跟着消失了。单行的箭头函数会提供一个隐式的return(这样的函数在其他编程语言中常被成为lamda函数)。

这里再着重强调一下上述的最后一个要求。仅仅当箭头函数为单行的形式时,才会出现隐式的return。当箭头函数伴随着{}被声明,那么即使它是单行的,它也不会有隐式return

复制代码
const getVerifiedToken = selector => {return getUsers().then(users => users[0]).then(verifyUser).then((user, verifiedToken) => verifiedToken).catch(err => log(err.stack));
}
复制代码

如果我们的函数内只有一条声明(statement),我们可以不写{},这样看上去会和CoffeeScript中的函数非常相似:

const getVerifiedToken = selector =>getUsers().then(users => users[0]).then(verifyUser).then((user, verifiedToken) => verifiedToken).catch(err => log(err.stack));

你没有看错,以上的例子是完全合法的ES6语法。当我们谈论只包含一条声明(statement)的箭头函数时,这并不意味着这条声明不能够分成多行写。

这里有一个坑,当忽略了{}后,我们该怎么返回空对象({})呢?

const emptyObject = () => {};
emptyObject(); // ?

不幸的是,空对象{}和空白函数代码块{}长得一模一样。。以上的例子中,emptyObject{}会被解释为一个空白函数代码块,所以emptyObject()会返回undefined。如果要在箭头函数中明确地返回一个空对象,则你不得不将{}包含在一对圆括号中(({})):

const emptyObject = () => ({});
emptyObject(); // {}

下面是一个更完整的例子:

复制代码
function () { return 1; }
() => { return 1; }
() => 1function (a) { return a * 2; }
(a) => { return a * 2; }
(a) => a * 2
a => a * 2function (a, b) { return a * b; }
(a, b) => { return a * b; }
(a, b) => a * bfunction () { return arguments[0]; }
(...args) => args[0]() => {} // undefined
() => ({}) // {}
复制代码

this

JavaScriptthis的故事已经是非常古老了,每一个函数都有自己的上下文。以下例子的目的是使用jQuery来展示一个每秒都会更新的时钟:

$('.current-time').each(function () {setInterval(function () {$(this).text(Date.now());}, 1000);
});

当尝试在setInterval的回调中使用this来引用DOM元素时,很不幸,我们得到的只是一个属于回调函数自身上下文的this。一个通常的解决办法是定义一个that或者self变量:

复制代码
$('.current-time').each(function () {var self = this;setInterval(function () {$(self).text(Date.now());}, 1000);
});
复制代码

但当使用胖箭头函数时,这个问题就不复存在了。因为它不产生属于它自己上下文的this

$('.current-time').each(function () {setInterval(() => $(this).text(Date.now()), 1000);
});

arguments变量

箭头函数与普通函数还有一个区别就是,它没有自己的arguments变量:

function log(msg) {const print = () => console.log(arguments[0]);print(`LOG: ${msg}`);
}log('hello'); // hello

再次重申,箭头函数没有属于自己的thisarguments。但是,你仍可以通过rest参数,来得到所有传入的参数数组:

function log(msg) {const print = (...args) => console.log(args[0]);print(`LOG: ${msg}`);
}log('hello'); // LOG: hello

关于yield

箭头函数不能作为generator函数使用。

最后

箭头函数是我最喜欢的ES6特性之一。使用=>来代替function是非常便捷的。但我也曾见过只使用=>来声明函数的代码,我并不认为这是好的做法,因为=>也提供了它区别于传统function,其所独有的特性。我个人推荐,仅在你需要使用它提供的新特性时,才使用它:

  • 当只有一条声明(statement)语句时,隐式return

  • 需要使用到父作用域中的this

转载于:https://www.cnblogs.com/yujihaia/p/7459822.html

http://www.lbrq.cn/news/1538605.html

相关文章:

  • 企信网企业信用信息系统/seo教学平台
  • 岳阳网站建设设计/关键词搜索排名公司
  • 做图片网站侵权吗/百度号码认证平台官网
  • wordpress公众号号涨粉/seo排名赚app多久了
  • 中小学智慧校园建设平台网站/山东济南seo整站优化费用
  • 网站建设亿码酷出名5/网站权重怎么提高
  • 网站开发托管协议/91永久海外地域网名
  • 网站建设与运营/营销工具
  • 建站教程图解/天津谷歌优化
  • 自己做网站页面/免费做网站的网站
  • 用php做电商网站/青岛新闻最新消息
  • 网站做开票/中国十大电商平台
  • 网站正在维护中啥意思/销售网络平台推广
  • 新网站如何做测试/企业网站运营推广
  • 嘉定专业做网站/个人推广网站
  • 微信平台app网站建设/搜索网站排行
  • 网站详情页用cdr做可以吗/网址域名大全
  • 政务网站党风廉政建设栏目/百度一下百度下载
  • 现货交易平台是不是诈骗/贵州二级站seo整站优化排名
  • vs2015是网站开发/首页图片点击率如何提高
  • 怎么做刷会员网站/seoheuni
  • 昆明 网站建设/爱站网长尾挖掘工具
  • 企业网站系统/app推广引流方法
  • iis搭建网站怎么做前端/网络营销代运营外包公司
  • 唐山网站建设哪家优惠/百度指数怎样使用
  • wordpress里面备份功能在哪里/嘉兴seo外包公司
  • 网站建设实质/策划营销
  • 徐州网站app开发/网站seo检测
  • 琼海做网站公司/网站建设推广服务
  • 网站建设和管理专业/吴忠seo
  • Web3:重构互联网秩序的下一代范式革命
  • 【技术揭秘】AI Agent操作系统架构演进:从单体到分布式智能的跃迁
  • 常见的软件图片缩放,算法如何选择?
  • Orbbec---setBoolProperty 快捷配置设备行为
  • JavaScript 性能优化:new Map vs Array.find() 查找速度深度对比
  • LeetCode 837.新 21 点:动态规划+滑动窗口