es8都有哪些新特性,你还在用es6吗? -买球官网平台

1顶
0踩

es8都有哪些新特性,你还在用es6吗?

2017-07-19 09:35 by 副主编 jihong10102006 评论(0) 有10933人浏览
es8
引用
原文:
作者: dor moshe
翻译:黑色巧克力

译者注:ecmascript第8版已经发布,下面来看看它的一些新特性。

ecmascript 8或ecmascript 2017将于6月底由tc39正式发布。我们在去年似乎讨论了很多关于ecmascript的事情,那不是毫无价值的。目前的标准是每年发布一个新的es规范版本。es6发布于2015年,es7发布于2016年,但有人记得es5发布的时间吗?那还是在2009年,在javascript的神奇崛起之前。

因此,ecmascript作为一种稳定的语言跟随javascript的发展而变化,现在我们需要将es8输入到词典中。

说明书或版本。在本文中,我们将通过代码示例介绍es8的主要新特性。

字符串填充

本节向字符串对象添加两个函数:padstart和padend。
正如它们的名称一样,这些函数的目的是填充字符串的开始或结束,以便产生的字符串达到给定的长度。可以使用特定的字符或字符串来填充它,或者默认设置空格。下面是方法声明:
str.padstart(targetlength [, padstring])
str.padend(targetlength [, padstring])

这些函数的第一个参数是targetlength,这是结果字符串的总长度。第二个参数是用于填充源字符串的可选的padstring。默认值是空格。
'es8'.padstart(2);          // 'es8'
'es8'.padstart(5);          // '  es8'
'es8'.padstart(6, 'woof');  // 'wooes8'
'es8'.padstart(14, 'wow');  // 'wowwowwowwoes8'
'es8'.padstart(7, '0');     // '0000es8'
'es8'.padend(2);          // 'es8'
'es8'.padend(5);          // 'es8  '
'es8'.padend(6, 'woof');  // 'es8woo'
'es8'.padend(14, 'wow');  // 'es8wowwowwowwo'
'es8'.padend(7, '6');     // 'es86666'


object.values 和 object.entries

object.values方法返回给定对象自己的可枚举属性值的数组,与for in循环所提供的顺序相同。这个函数的声明是非常简单的。
object.values(obj)


obj参数是操作的源对象。它可以是一个对象或数组(一个具有索引的对象,如[10、20、30]- > { 0:10,1:20,2:30 })。
const obj = { x: 'xxx', y: 1 };
object.values(obj); // ['xxx', 1]
const obj = ['e', 's', '8']; // same as { 0: 'e', 1: 's', 2: '8' };
object.values(obj); // ['e', 's', '8']
// when we use numeric keys, the values returned in a numerical 
// order according to the keys
const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' };
object.values(obj); // ['yyy', 'zzz', 'xxx']
object.values('es8'); // ['e', 's', '8']


object.entries方法返回一个给定对象的可枚举属性[key, value]键值对的数组,与object.values的顺序相同。这个函数的声明也很简单。
const obj = { x: 'xxx’, y: 1 };
object.entries(obj); // [[’x’, 'xxx’], [’y’, 1]]
const obj = [’e’, 's’, '8’];
object.entries(obj); // [[’0’, 'e’], [’1’, 's’], [’2’, '8’]]
const obj = { 10: 'xxx’, 1: 'yyy’, 3: 'zzz' };
object.entries(obj); // [[’1’, 'yyy’], [’3’, 'zzz’], [’10’, 'xxx’]]
object.entries('es8'); // [['0', 'e'], ['1', 's'], ['2', '8']]


object.getownpropertydescriptors

getownpropertydescriptors方法返回所有的属性描述符指定的对象。一个对象的属性描述符是直接在对象上定义的,并不是从对象的原型继承的。该函数的声明如下。
object.getownpropertydescriptors(obj)

obj是源对象。返回的描述符对象的可能键是可配置的、可枚举的、可写的、可获取和设置值。
const obj = { 
  get es7() { return 777; },
  get es8() { return 888; }
};
object.getownpropertydescriptors(obj);
// {
//   es7: {
//     configurable: true,
//     enumerable: true,
//     get: function es7(){}, //the getter function
//     set: undefined
//   },
//   es8: {
//     configurable: true,
//     enumerable: true,
//     get: function es8(){}, //the getter function
//     set: undefined
//   }
// }

描述符数据对于非常重要。

在函数参数列表和调用中允许尾部逗号

在函数参数中允许尾部逗号是编译器在列表末尾添加不必要的逗号时不抛出错误(语法错误)的能力:
function es8(var1, var2, var3,) {
  // ...
}

作为函数声明,可以应用于函数的调用如下。
es8(10, 20, 30,);

这个特性起源于对象常量和数组常量(10、20、30、)和{ x:1、}的逗号结尾。

异步函数

async function声明定义了一个异步函数,它返回一个asyncfunction对象。在内部,异步函数与生成器很相似,但是它们没有被转换为生成器函数。
function fetchtextbypromise() {
  return new promise(resolve => { 
    settimeout(() => { 
      resolve("es8");
    }, 2000);
  });
}
async function sayhello() { 
  const externalfetchedtext = await fetchtextbypromise();
  console.log(`hello, ${externalfetchedtext}`); // hello, es8
}
sayhello();

调用sayhello方法,2秒后将会打印hello,es8。
console.log(1);
sayhello();
console.log(2);

现在输出是这样的:
1 // immediately
2 // immediately
hello, es8 // after 2 seconds

这是因为函数调用不会阻塞流。

注意,async function总是返回一个应答,而一个wait关键字只能在用async关键字标记的函数中使用。

共享内存和原子

在共享内存时,多个线程可以在内存中读取和写入相同的数据。原子操作确保编写和读取可预测的值,原子操作时有序的并且不会被中断。本节介绍了一个新的构造函数sharedarraybuffer和使用静态方法的命名空间对象atomics。

atomic对象是静态方法(如math)的对象,因此不能将其用作构造函数。该对象中的静态方法示例如下:
  • add / sub —— 在一个特定的位置添加或减去一个值
  • and / or / xor —— 按位与、按位或、按位异或
  • load —— 在特定位置获取值

明年的es9 -取消模板字符串限制

使用带标记的模板字符串(es6),我们可以做一些事情,例如声明一个模板解析函数,并根据逻辑返回一个值:
const esth = 8;
helper`es ${esth} is `;
function helper(strs, ...keys) {
  const str1 = strs[0]; // es
  const str2 = strs[1]; // is
  let additionalpart = '';
  if (keys[0] == 8) { // 8
    additionalpart = 'awesome';
  }
  else {
    additionalpart = 'good';
  }
  return `${str1} ${keys[0]} ${str2} ${additionalpart}.`;
}

返回值是“es 8 is awesome”。
对于esth 7返回值是“es 7 is good”。

对于包含例如\u或\x的子字符串的模板有一个限制,es9将处理这个限制问题。可以在或中阅读更多信息。

总结

javascript总是在不断更新。对规范采用新特性的过程是有计划地和平稳推进的。在最后阶段,tc39委员会确认了这些特性,并由核心开发人员实现。它们中的大多数已经是类型脚本语言、浏览器或其他的填充物的一部分,所以可以现在就去尝试使用它们。
  • 大小: 106.2 kb
  • 大小: 7.7 kb
  • 大小: 10.9 kb
  • 大小: 10 kb
  • 大小: 9.3 kb
  • 大小: 11.8 kb
  • 大小: 8.9 kb
  • 大小: 10.1 kb
1
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • es6、es7、es8、es9、es10新特性es全称ecmascript,ecmascript是ecma制定的标准化脚本语言 es6、es7、es8、es9、

  • 大家都听说过0day吧?呵呵,中国d版满天飞,我原来也用过很多0day的软件,但一直没有特意去找过什么0day的东东。我要下什么,一般都是到baidu、google搜索,然后到网站上去点下载链接,但这种搜索方式有好多东西都找不到,不能说不是一个遗憾。今天我在找《wrox press beginning javascript 2nd edition》这本书的时候,在无意中发现了http://www.

  • 推荐.net开发框架: nbear 国外技术站点(我想推荐) codeproject dotnetjunkies sourceforge.net theserverside.net asp.net codebetter msdn slashdot c# corner gotdo

  •  学习dotnet经典网站 还不错推荐给大家原文——名称:快速入门地址:http://chs.gotdotnet.com/quickstart/描述:本站点是微软.net技术的快速入门网站,我们不必再安装.net framework中的快速入门示例程序,直接在网上查看此示例即看。****************************************************名称:微软官方.

  • 博客园是个好地方。最近又回到 dot net 平台开发。收据些东西。有时间慢慢啃暂时先找到了这一点。。有空慢慢逛逛。。不断更新.. 有好的也麻烦推荐一下。。 castle cuyahoga mygeneration nhibernate puzzle.net spring.net net 2.0专题 http

  • es6起各个版本的新特性汇总 es全称ecmascript,ecmascript是ecma制定的标准化脚本语言。目前javascript使用的ecmascript版本为ecma-417。关于ecma的最新资讯可以浏览 ecma news查看。ecmascript 标准建立在一些...

  • es6、es7、es8

  • 用一张图来总结es7-es12所有知识点。

  • 一、es6(2015) 1、类:class 可以看作 es6 的语法糖 classapp{ constructor(name){ this.name=123; }console(){ console.log(this.name); }}const b= new app( 123);b.console(); // 123------------------...

  • es6、es7、es8、es9、es10新特性一览 es全称ecmascript,ecmascript是ecma制定的标准化脚本语言。目前javascript使用的ecmascript版本为ecma-417。关于ecma的最新资讯可以浏览ecma news查看。 ecma规范最终由tc...

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hwfwai55-1637595380774)(images/微信截图_20201004101830.png)] ​ ecma国际(ecma international)是一家国际性会员制度的信息和电信标准...

  • ecmascript 2015(es6) list item let和const 类(class) 模块化(es module) 箭头(arrow)函数 函数参数默认值 模板字符串 解构赋值 延展操作符 … 对象属性简写 promise ecmascript 2016(es2017) array....

  • 目前javascript使用的ecmascript版本为ecmascript-262。 ecmascript 标准建立在一些原有的技术上,最为著名的是 javascript (网景) 和 jscript (微软)。它最初由网景的 brendan eich 发明,第一次出现是在网景的 ...

  • 比较es6、es7、es8常用特性和新特性一、es6变量的改变,添加了块级作用域的概念字符串新增方法函数可以像c/c 那样设置默认参数值,增加数据容错能力对象键值对重名简写对象字面量简写提供对象对象合并数据解构和...

  • es6新特性 es6新特性比较多, 可以将这个特性分为功能和语法糖两个类别. 在回答问题时也会比较有条理 定义变量let, const es6中可以使用let定义变量, const定义常量, 二者是块级作用域 这里说一下let和var的区别 var...

  • javascript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型,常用于网页客户端编程,使网页在客户端浏览器中,实现更多地动态功能,表现...主要包含es6、es7、es8引入的新语言特性的学习。

  • 目录es6-promisepromise简介promise.prototype.then方法promise.prototype.catch方法es7 新特性array.prototype.includes指数操作符es8新特性-async和awaitasync 和 awaitasync函数await表达式async和await结合读取...

  • 面试的时候,面试官老是喜欢问一些你知道es6的新属性有哪些吗? 实际上,es6都是2015年出的规范了,现在都是2022年,还考试这个,未免有些落伍。 今天就带大家理一下,这些年,从es2015(es6)到es2021都增加了哪些...

global site tag (gtag.js) - google analytics