Code前端首页关于Code前端联系我们

2021年已经过去一半了,还不快点去了解es2020

terry 2年前 (2023-09-08) 阅读数 146 #Vue

顶级对象的属性

众所周知,浏览器全局上下文指的是窗口,而节点指的是全局对象。在es6中,顶级对象属性相当于全局变量。

window.a = 1
a // 1

a = 2
window.a // 2
 

从上面的代码可以看到,顶级对象的属性赋值和全局变量的赋值是一样的。

es6 保持了两者之间的兼容性。 var 和 function 命令声明的全局变量仍然是顶级对象的属性。 let const calss 命令声明的全局变量不属于顶级对象属性。

var a = 1
window.a // 1
let b = 2
window.b // undefined
 

全局此对象是

在javaScript中,有一个顶级对象提供全局上下文(即全局作用域),所有代码都在该上下文中运行。但顶级对象在不同的​​实现中并不统一。
es2020 引入了 globalThis 作为语言标准级别的顶级对象。这意味着 globalThis 存在于任何环境中,并且您可以通过在全局环境中指向它来获取顶级对象。

解构数字和逻辑值

构造赋值时,如果等号右边是数值或者布尔值,首先会被转换为对象。

let {toString: s} = 123;
s === Number.prototype.toString // true

let {toString: s} = true;
s === Boolean.prototype.toString // true
 

上面的代码中,数值和逻辑值的包装对象具有toString属性,因此变量s可以接收该值。
构造赋值的规则是,只要等号右边的值不是对象或数组,就先将其转换为对象。
null 和 undefined 无法转换为对象,因此它们的构造和赋值会导致错误。

标签模板

模板字符串函数后面可以紧跟一个函数名称,调用该函数名称来处理模板字符串。这是一个标签模板。
标签模板不是模板,而是俄语函数调用的一种特殊形式。标签引用函数,紧跟其后的模板字符串是其参数。
但是,如果模板字符串中有变量,它会在调用函数之前将模板字符串处理成多个参数。

function tag() {
 return 'tag';
}
let name = "Joh";
var res = tag`hello ${name}`;
console.log(res); // tag
 

上面的代码、原始标签函数和模板字符串的组合使模板失效。
标签模板的一个重要用途是过滤 HTML 字符串,以防止用户输入恶意内容

指数运算符

** 是指数运算符

2 ** 2 // 4
2 ** 3 // 8
// 运算符的一个特点是右结合。多个指数运算符连用时,是从最右边开始计算的。
2 ** 3 ** 2 // 512
let a = 1.5
a **= 2 // 等价于 a = a * a

let b = 4
b **=3 // 等价于 b = b * b * b
 

BigInt 类型

是es2020引入的新数据类型(基本类型)。
BigInt 仅用于显示整数,位数不受限制,可以精确表示任意位数的整数。对于
BigInt类型的数据,必须添加后缀n
typeof 123n // 'bigint'

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门