当前位置: 首页 / 技术分享 / 正文
好程序员Web前端教程系列之JavaScript五大新特性

2020-02-12

Web前端教程 JavaScript Web前端 HTML5

  好程序员Web前端教程系列之JavaScript五大新特性,JavaScriptWeb开发者必学的三种语言之一,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。随着互联网的更迭以及技术的革新,JavaScript也增加了很多新特性,接下来好程序员Web前端教程系列就给大家分享一下。

JS

  一、类的私有变量

  最新提案之一是在类中添加私有变量的方法。我们将使用#符号表示类的私有变量。这样就不需要使用闭包来隐藏不想暴露给外界的私有变量。通过#修饰的成员变量或成员函数就成为了私有变量,如果试图在Class外部访问,则会抛出异常。现在,此特性可在最新版本的Chrome和 Node.js中使用。

  二、空位合并操作符

  在开发过程中,经常会遇到这样场景:变量如果是空值,则就使用默认值,我们是这样实现的:

  let c = a ? a : b // 方式1

  let c = a || b // 方式2

  这两种方式有个明显的弊端,它都会覆盖所有的假值,如(0, '', false),这些值可能是在某些情况下有效的输入。

  为了解决这个问题,有人提议创建一个“nullish”合并运算符,用??表示。有了它,我们仅在第一项为nullundefined时设置默认值。

  三、可选链操作符

  你可能碰到过这样的情形:当需要访问嵌套在对象内部好几层的属性时,会得到臭名昭著的错误Cannot read property 'stop' of undefined,然后你就要修改你的代码来处理属性链中每一个可能的undefined对象,比如:

  let nestedProp = obj && obj.first && obj.first.second;

  在访问obj.first.second之前,objobj.first 的值要被确认非null(且不是undefined)。目的是为了防止错误发生,如果简单直接的访问obj.first.second而不对objobj.first 进行校验就有可能产生错误。

  有了可选链式调用 ,你只要这样写就可以做同样的事情:

  let nestedProp = obj?.first?.second;

  如果objobj.firstnull/undefined,表达式将会短路计算直接返回undefined

  四、static字段

  它允许类拥有静态字段,类似于大多数OOP语言。静态字段可以用来代替枚举,也可以用于私有字段。现在,此特性可在最新版本的ChromeNode.js中使用。代码举例:

  class Colors {

  // public static 字段

  static red = '#ff0000';

  static green = '#00ff00';

  // private static 字段

  static #secretColor = '#f0f0f0';

  

  }

  

  font.color = Colors.red;

  font.color = Colors.#secretColor; // 出错

  五、WeakRef

  一般来说,在JavaScript中,对象的引用是强保留的,这意味着只要持有对象的引用,它就不会被垃圾回收。

  const ref = { x: 42, y: 51 };

  // 只要我们访问ref对象(或者任何其他引用指向该对象),这个对象就不会被垃圾回收

  目前在Javascript中,WeakMapWeakSet是弱引用对象的唯一方法:将对象作为键添加到WeakMapWeakSet中,是不会阻止它被垃圾回收的。

  JavaScriptWeakMap并不是真正意义上的弱引用:实际上,只要键仍然存活,它就强引用其内容。WeakMap仅在键被垃圾回收之后,才弱引用它的内容。WeakRef是一个更高级的API,它提供了真正的弱引用,Weakref实例具有一个方法deref,该方法返回被引用的原始对象,如果原始对象已被收集,则返回undefined对象。JavaScript中对象的引用是强引用,WeakMapWeakSet可以提供部分的弱引用功能,若想在JavaScript中实现真正的弱引用,可以通过配合使用WeakRef和终结器(Finalizer)来实现。

  除了以上内容,JavaScript新特性还包括BigIntstatic字段。想要入行Web前端,就必须掌握JavaScript,就一定要了解JavaScript特性。你可以来好程序员Web前端培训班,专业大牛讲师全程面授,讲解高端潮流的技术点,还有一体化就业保障做后盾,让你学习就业一举两得,更有大量web前端教程供大家学习。


好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2020-02-17(北京)

    开班盛况

    开班时间:2020-03-02(深圳)

    开班盛况
  • 大数据+人工智能 <好程序员严选班>

    开班时间:2019-12-23(北京)

    开班盛况
  • 大数据+人工智能 <好程序员班>

    开班时间:2020-02-24(杭州)

    开班盛况

    开班时间:2020-02-17(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2020-03-09(北京)

    开班盛况
  • Python全栈+人工智能 <高端班>

    开班时间:2019-07-22(北京)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2020-02-24(北京)

    开班盛况
在线咨询
免费试听
入学教程
立即报名

Copyright 2007-2019 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公安网11010802011455号