首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

javascript ES2020 已经来了

在ES6(也就是ECMAScript 2015)推出之前,JavaScript的发展一直是比较缓慢的。...虽然ES2020并没有像在ES6中引入那么多的功能,但它引入了许多有用的新增功能。在本文中,我将讨论ES2020中我最喜欢的新功能。...可选链(Optional Chaining) 可选链语法允许你访问深度嵌套的对象,而不用担心属性是否存在。在处理对象时,你肯定熟悉这样的错误类型。...当使用动态导入时,导入关键字可以作为一个函数调用,它返回一个Promise。下面是一个例子,说明当用户点击一个按钮时,如何动态导入一个模块。...'John' 当左边操作数未定义或为空时,该操作符将返回右手操作数。在上面的例子中,由于student.name未定义,该操作符将把name的值设置为'John'。

1.3K40

React 中必会的 10 个概念

继承,这不是特定于 JavaScript 的东西,而是面向对象编程中的常见概念。 简而言之,这是将一个类创建为另一个类的子级的能力。...这是一个可以与对象以及数组一起使用的概念。分解是简化 JavaScript 代码的一种简便方法,因为它使我们可以在一行中将数据从对象或数组中拉出。...典型 if 语句的语法如下: ? 条件为真,执行第一条语句(在冒号之前:)。条件为假(false,null,NaN,0,""或未定义),执行第二条语句(在冒号之后:)。...导入 / 导出模块 在 ES6 之前,由于 JavaScript 不支持模块,我们使用了 RequiredJS 或 CommonJS 之类的库来导入 / 导出模块。...它使程序等待,直到 Promise 成功并返回其结果。这是一个 Promise 在几秒钟后 resolve 的示例: ?

6.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    手把手带你学习微信小程序 —— (ES6语法简要概述)

    ES6 语法简要学习 一、定义变量 1.1 出现变量提升的问题 1.2 let 代码块只在当前代码中有效 1.3 const 只读变量 二、函数的基本使用 2.1 定义函数 2.2 ES6 箭头函数?...console.log(a); var a = 10; //则会出现未定义 undifined 1.2 let 代码块只在当前代码中有效 类比于局部变量 for(var i=0;i<=10;i++){...console.log("============="); } person("GG",20,{height:180}); person("GG",{}); //使用对象传值的时候...3.1 定义类以及使用构造函数 131节 ES6 类的学习 类的基本使用 // 定义 ES6 中的类,类中每个方法都不能加逗号 classdemo:function(){ class Person...对象方法和类方法灵活使用 四、模块化代码 4.1 import 或者 export 132节 模块 使用export 和 impoet 语句即可,可以直接导入js文件 eg: 新建一个util.js

    57530

    50道JavaScript详解面试题,你需要了解一下

    答案是输出为10,因为将对象传递给函数时的对象相似,仅传递其值,而不传递对内存位置的实际引用。这就是为什么更改仅影响函数范围内的参数的原因。 3、控制台输出是什么?...该对象位于原型链的顶部,当浏览器查找访问属性的值时,它将遍历原型链,直到找到该值或直到不再遍历所有原型为止。 15、空值合并运算符做什么? 当左侧操作数为null或未定义时,它将返回右侧操作数。...33、为什么在导入模块时使用别名? 大多数时候,我们处理具有默认命名约定的简单导入,除此之外,有时我们不得不处理名称,因为有的名称较长。在这种情况下,使用别名是有帮助的。...35、JavaScript中的子程序是什么? 子例程是主例程中遇到的函数,然后将其保存到对象并存储以供以后使用。例如,执行范围(变量,参数等)与子例程一起存储。...是的,例如,在if语句中,需要在评估中返回一个布尔值,例如if(a!== b)。 50、JavaScript中的哪个ES6函数返回一个新数组? map()和filter()。

    3.5K40

    nodejs写bash脚本终极方案!

    ◆ 前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义的变量shell中变量没有定义,仍然是可以使用的,但是它的结果可能不是你所预期的。...exec:启动一个子进程来执行命令,与spawn不同的是,它有一个回调函数能知道子进程的情况 execFile:启动一子进程来执行可执行文件 fork:与spawn类似,不同点是它需要指定子进程需要需执行的...在同步模式下,这将返回一个 ShellString #(与 ShellJS v0.6.x 兼容,它返回一个形式为 { code:..., stdout:..., stderr:... } 的对象)。...# 否则,这将返回子进程对象,并且回调接收参数(代码、标准输出、标准错误)。 if (shell.exec('git commit -am "Auto-commit"').code !...注意: __filename & __dirname这两个变量是在commonjs中的。我们用的是.mjs结尾的es6 模块。

    3.9K20

    分享30个你必须知道的JS基础知识

    || 运算符,也称为逻辑或,计算操作数并返回它遇到的第一个真值表达式。 它还使用短路来防止不必要的工作。 在ES6引入默认函数参数之前,它被用来初始化函数中的默认参数值。...undefined 是未指定特定值的变量或未显式返回值的函数的默认值,例如 console.log(1),以及对象中不存在的属性,JS 引擎为其分配未定义的值。...它导致未定义的值。 请记住,访问对象本身或其原型中不存在的属性默认为未定义。 由于 undefined 没有属性“x”,因此尝试访问它会导致错误。 10.什么是event.target?...在此示例中,我们可以得出结论,event.currentTarget 是事件处理程序附加到的元素。 12. 为什么在 JavaScript 中比较两个相似的对象会返回 false?...这就是为什么第一个 console.log 语句返回 false,而第二个 console.log 语句返回 true。 a 和 c 具有相同的引用地址,而 a 和 b 则不同。 13.

    25530

    50 种 ES6 模块,面试被问麻了

    根据 MDN: import.meta 对象为 JavaScript 模块提供特定于上下文的元数据。它包含有关模块的信息。 它返回一个带有 url 属性的对象,url 属性表示模块的基本 URL。...它允许绕过导入声明的语法限制,有条件或按需加载模块。 该功能在 ES2020 中引入。 import(module) 返回一个 promise ,该承诺会履行到一个包含模块所有输出的对象。...在这段代码中,我们使用了动态导入,这在前面的示例中已经介绍过。要理解这段代码中的问题,我们需要仔细看看 import() 的返回值。 变量 module1 和 module2 的值与我们的预期不同。...import() 返回一个 promise ,该promise 将实现一个与命名空间导入形状相同的对象: import * as name from moduleName default 输出可作为名为...那么,为什么两个对象相乘时会出现如此奇怪的错误,而不是我们习惯的 NaN 呢? 这是因为返回的对象具有 null 原型。因此,它没有用于将对象转换为基元的 toString() 方法。

    15300

    如何避免 JavaScript 模块化中的函数未定义陷阱

    例如,像 pageLoad 这样在普通脚本中可以正常工作的函数,转为 ES6 模块后,在浏览器或其他模块中调用时,可能会抛出未定义的错误: Uncaught ReferenceError: pageLoad...分析问题 原因分析:探讨 ES 模块的作用域和导出机制 在了解为什么 pageLoad 函数在模块化后未定义之前,我们需要先理解 ES 模块 与普通脚本之间的核心区别。...全局变量的问题:为什么普通脚本中的全局变量或函数在模块化后不再可用 由于模块的作用域是私有的,导致在普通脚本中定义的全局变量或函数,在模块化后无法直接作为全局对象的一部分被访问。...动态导入:在某些情况下,可能需要使用 import() 函数进行动态导入,这会返回一个 Promise,适用于按需加载或惰性加载场景。 // 动态导入 import('....我们需要通过 export 和 import 来显式管理这些依赖关系,避免模块内的函数未定义等错误。 全局对象的使用:在模块化环境下,尽量避免使用全局对象来管理依赖。

    12510

    nodejs 写 bash 脚本终极方案!

    前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义的变量shell中变量没有定义,仍然是可以使用的,但是它的结果可能不是你所预期的。...exec:启动一个子进程来执行命令,与spawn不同的是,它有一个回调函数能知道子进程的情况 execFile:启动一子进程来执行可执行文件 fork:与spawn类似,不同点是它需要指定子进程需要需执行的...在同步模式下,这将返回一个 ShellString #(与 ShellJS v0.6.x 兼容,它返回一个形式为 { code:..., stdout:..., stderr:... } 的对象)。...# 否则,这将返回子进程对象,并且回调接收参数(代码、标准输出、标准错误)。 if (shell.exec('git commit -am "Auto-commit"').code !...注意: __filename & __dirname这两个变量是在commonjs中的。我们用的是.mjs结尾的es6 模块。

    2.6K20

    「万字进阶」深入浅出 Commonjs 和 Es Module

    如果没有缓存,会创建一个 module 对象,缓存到 Module 上,然后执行文件,加载完文件,将 loaded 属性设置为 true ,然后返回 module.exports 对象。...问题:为什么 exports={} 直接赋值一个对象就不可以呢?...import() 动态引入 import() 返回一个 Promise 对象, 返回的 Promise 的 then 成功回调中,可以获取模块的加载成功信息。...ES6 Module 的值是动态绑定的,可以通过导出方法修改,可以直接访问修改结果。 ES6 Module 可以导出多个属性和方法,可以单个导入导出,混合导入导出。...ES6 模块提前加载并执行模块文件, ES6 Module 导入模块在严格模式下。 ES6 Module 的特性可以很容易实现 Tree Shaking 和 Code Splitting。

    2.3K10

    11个棘手的JavaScript面试题

    解析: 如果我们使用'new'关键字,则指的是我们创建的新的空对象。但是,如果您不添加new关键字,则它是指窗口全局对象。 3、JavaScript 控制 输出是什么?...而且,数组的类型是什么?它是一个对象,因此typeof args返回“ object”。 ? 6、“ var”变量 输出是什么?...1、2、3、4、5,空x 5,100] D:语法错误 解答: 如果你为数组中的索引设置的值超过了数组的长度,则JavaScript将创建其中包含未定义值的“空数”。...在这种情况下,对于数组中的每个元素,map函数都会返回“ undefined”,并且结果集合是一个充满“ undefined”的数组。 ? 11、导入&&导出 输出是什么?.../utilsFile'; myCounter += 1; console.log(myCounter); 可能的结果: A:2 B:1 C:NaN D:错误 解答:D ES6模块的导入是只读的。

    1.1K10

    「万字进阶」深入浅出 Commonjs 和 Es Module

    如果没有缓存,会创建一个 module 对象,缓存到 Module 上,然后执行文件,加载完文件,将 loaded 属性设置为 true ,然后返回 module.exports 对象。...问题:为什么 exports={} 直接赋值一个对象就不可以呢?...import() 动态引入 import() 返回一个 Promise 对象, 返回的 Promise 的 then 成功回调中,可以获取模块的加载成功信息。...ES6 Module 的值是动态绑定的,可以通过导出方法修改,可以直接访问修改结果。 ES6 Module 可以导出多个属性和方法,可以单个导入导出,混合导入导出。...ES6 模块提前加载并执行模块文件, ES6 Module 导入模块在严格模式下。 ES6 Module 的特性可以很容易实现 Tree Shaking 和 Code Splitting。

    3.4K31

    ES6都有什么?

    不能被修改 4.变量名建议大写,如: const PI = 3.14 变量类型 数据类型 1.数字: number 2.字符串: String 3.布尔类型: true 和 false 4.未定义...如果返回true,当前元素被保留, 否则被过滤 forEach 遍历 遍历数组 map 映射 返回和原数据一一对应的新数组 reduce 累计 a,b两个参数,a是上一次返回的结果 every...多条语句用{}包裹,return返回 如果return对象: return({}) 箭头函数的this指向上一层作用域中的 this对象 默认参数 当参数为undefined时,使用默认参数...0开始依次替换 查找 includes 子主题 1 查找 find var arr2 = [2,7,10,100,50,255]; var ret = arr2....find(item=>item>=100); console.log(ret); 找到一个合适的就返回,返回具体值 查找 findIndex 找到一个合适的就返回,返回下标 ES6

    91420

    JavaScript ES6  让我们写得少,做得多

    ES6 向我们介绍了许多强大的功能,如箭头函数,模板字符串,对象结构,模块等,让我们来看看。 const and let const 是 ES6 中用于声明变量的新关键字。...这是旧语法和 ES6 之间的巨大差异。使用字符串时,ES6 中的文字字符串看起来比 ES5 更有条理,结构更好。 默认参数 当您忘记编写参数时,它不会返回未定义的错误,因为该参数已在默认值中定义。...数组和对象解构 解构使得将数组或对象的值分配给新变量更容易。...使用 ES6,我们只需将我们的值放在大括号中以获取对象的任何属性。 注意:如果指定的变量与属性名称不同,则返回 undefined。...Class 类是面向对象编程(OOP)的核心。它们使您的代码更安全和封装。使用类可以为代码提供一个很好的结构并使其保持面向对象。

    81620

    前端-javascript简写技巧

    高级篇 2.1 变量赋值 当将一个变量的值赋给另一个变量时,首先需要确保原值不是 null、未定义的或空值。...简写为: const dbHost = process.env.DB_HOST || 'localhost'; 2.3 对象属性 ES6 提供了一个很简单的办法,来分配属性的对象。...这时候可以使用箭头函数来简写: 简写为: 2.5 隐式返回值 返回值是我们通常用来返回函数最终结果的关键字。...只有一个语句的箭头函数,可以隐式返回结果(函数必须省略括号({ }),以便省略返回关键字)。 要返回多行语句(例如对象文本),需要使用()而不是{ }来包裹函数体。...要执行参数分配,可以使用if语句抛出未定义的错误,或者可以利用“强制参数”。

    1.5K30

    JavaScript ES6  让我们写得少,做得多

    ES6 向我们介绍了许多强大的功能,如箭头函数,模板字符串,对象结构,模块等,让我们来看看。 const and let const 是 ES6 中用于声明变量的新关键字。...这是旧语法和 ES6 之间的巨大差异。使用字符串时,ES6 中的文字字符串看起来比 ES5 更有条理,结构更好。 默认参数 忘记编写参数时,它不会返回未定义的错误,因为该参数已在默认值中定义。...数组和对象解构 解构使得将数组或对象的值分配给新变量更容易。...使用 ES6,我们只需将我们的值放在大括号中以获取对象的任何属性。 注意:如果指定的变量与属性名称不同,则返回 undefined。...Class 类是面向对象编程(OOP)的核心。它们使您的代码更安全和封装。使用类可以为代码提供一个很好的结构并使其保持面向对象。

    63121
    领券