在ES6(也就是ECMAScript 2015)推出之前,JavaScript的发展一直是比较缓慢的。...虽然ES2020并没有像在ES6中引入那么多的功能,但它引入了许多有用的新增功能。在本文中,我将讨论ES2020中我最喜欢的新功能。...可选链(Optional Chaining) 可选链语法允许你访问深度嵌套的对象,而不用担心属性是否存在。在处理对象时,你肯定熟悉这样的错误类型。...当使用动态导入时,导入关键字可以作为一个函数调用,它返回一个Promise。下面是一个例子,说明当用户点击一个按钮时,如何动态导入一个模块。...'John' 当左边操作数未定义或为空时,该操作符将返回右手操作数。在上面的例子中,由于student.name未定义,该操作符将把name的值设置为'John'。
继承,这不是特定于 JavaScript 的东西,而是面向对象编程中的常见概念。 简而言之,这是将一个类创建为另一个类的子级的能力。...这是一个可以与对象以及数组一起使用的概念。分解是简化 JavaScript 代码的一种简便方法,因为它使我们可以在一行中将数据从对象或数组中拉出。...典型 if 语句的语法如下: ? 条件为真,执行第一条语句(在冒号之前:)。条件为假(false,null,NaN,0,""或未定义),执行第二条语句(在冒号之后:)。...导入 / 导出模块 在 ES6 之前,由于 JavaScript 不支持模块,我们使用了 RequiredJS 或 CommonJS 之类的库来导入 / 导出模块。...它使程序等待,直到 Promise 成功并返回其结果。这是一个 Promise 在几秒钟后 resolve 的示例: ?
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
答案是输出为10,因为将对象传递给函数时的对象相似,仅传递其值,而不传递对内存位置的实际引用。这就是为什么更改仅影响函数范围内的参数的原因。 3、控制台输出是什么?...该对象位于原型链的顶部,当浏览器查找访问属性的值时,它将遍历原型链,直到找到该值或直到不再遍历所有原型为止。 15、空值合并运算符做什么? 当左侧操作数为null或未定义时,它将返回右侧操作数。...33、为什么在导入模块时使用别名? 大多数时候,我们处理具有默认命名约定的简单导入,除此之外,有时我们不得不处理名称,因为有的名称较长。在这种情况下,使用别名是有帮助的。...35、JavaScript中的子程序是什么? 子例程是主例程中遇到的函数,然后将其保存到对象并存储以供以后使用。例如,执行范围(变量,参数等)与子例程一起存储。...是的,例如,在if语句中,需要在评估中返回一个布尔值,例如if(a!== b)。 50、JavaScript中的哪个ES6函数返回一个新数组? map()和filter()。
null、未定义的或空值。...ES6 提供了一个很简单的办法,来分配属性的对象。...返回值是我们通常用来返回函数最终结果的关键字。...只有一个语句的箭头函数,可以隐式返回结果(函数必须省略括号({ }),以便省略返回关键字)。 要返回多行语句(例如对象文本),需要使用()而不是{ }来包裹函数体。...,提供了完备的公式引擎、排序、过滤、输入控件、数据可视化、Excel 导入/导出等功能,适用于 .NET、Java 和移动端等各平台在线编辑类 Excel 功能的表格程序开发。
◆ 前言 最近在学习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 模块。
|| 运算符,也称为逻辑或,计算操作数并返回它遇到的第一个真值表达式。 它还使用短路来防止不必要的工作。 在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.
null、未定义的或空值。...ES6 提供了一个很简单的办法,来分配属性的对象。...返回值是我们通常用来返回函数最终结果的关键字。...只有一个语句的箭头函数,可以隐式返回结果(函数必须省略括号({ }),以便省略返回关键字)。 要返回多行语句(例如对象文本),需要使用()而不是{ }来包裹函数体。...要执行参数分配,可以使用if语句抛出未定义的错误,或者可以利用“强制参数”。
根据 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() 方法。
在模块化的演进过程中,涌现了多个模块化标准,例如 CommonJS、AMD 以及现代的 ES6 Module。本篇文章将介绍这些标准的发展历程和各自的特点。 一、为什么需要模块化?...循环依赖问题:CommonJS 规范中,模块被加载时执行(运行时加载),如果两个模块互相引用(循环依赖),这可能会导致未定义的行为或部分代码无法执行。...导入和导出语句(Import 和 Export): ES6 Module 使用 import 和 export 关键字来导入和导出模块成员。...还支持动态导入模块,这种导入方式适用于需要按需加载的场景。...动态导入返回一个 Promise 对象。 // main.js import(".
例如,像 pageLoad 这样在普通脚本中可以正常工作的函数,转为 ES6 模块后,在浏览器或其他模块中调用时,可能会抛出未定义的错误: Uncaught ReferenceError: pageLoad...分析问题 原因分析:探讨 ES 模块的作用域和导出机制 在了解为什么 pageLoad 函数在模块化后未定义之前,我们需要先理解 ES 模块 与普通脚本之间的核心区别。...全局变量的问题:为什么普通脚本中的全局变量或函数在模块化后不再可用 由于模块的作用域是私有的,导致在普通脚本中定义的全局变量或函数,在模块化后无法直接作为全局对象的一部分被访问。...动态导入:在某些情况下,可能需要使用 import() 函数进行动态导入,这会返回一个 Promise,适用于按需加载或惰性加载场景。 // 动态导入 import('....我们需要通过 export 和 import 来显式管理这些依赖关系,避免模块内的函数未定义等错误。 全局对象的使用:在模块化环境下,尽量避免使用全局对象来管理依赖。
前言 最近在学习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 模块。
如果没有缓存,会创建一个 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。
解析: 如果我们使用'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模块的导入是只读的。
不能被修改 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
ES6 向我们介绍了许多强大的功能,如箭头函数,模板字符串,对象结构,模块等,让我们来看看。 const and let const 是 ES6 中用于声明变量的新关键字。...这是旧语法和 ES6 之间的巨大差异。使用字符串时,ES6 中的文字字符串看起来比 ES5 更有条理,结构更好。 默认参数 当您忘记编写参数时,它不会返回未定义的错误,因为该参数已在默认值中定义。...数组和对象解构 解构使得将数组或对象的值分配给新变量更容易。...使用 ES6,我们只需将我们的值放在大括号中以获取对象的任何属性。 注意:如果指定的变量与属性名称不同,则返回 undefined。...Class 类是面向对象编程(OOP)的核心。它们使您的代码更安全和封装。使用类可以为代码提供一个很好的结构并使其保持面向对象。
高级篇 2.1 变量赋值 当将一个变量的值赋给另一个变量时,首先需要确保原值不是 null、未定义的或空值。...简写为: const dbHost = process.env.DB_HOST || 'localhost'; 2.3 对象属性 ES6 提供了一个很简单的办法,来分配属性的对象。...这时候可以使用箭头函数来简写: 简写为: 2.5 隐式返回值 返回值是我们通常用来返回函数最终结果的关键字。...只有一个语句的箭头函数,可以隐式返回结果(函数必须省略括号({ }),以便省略返回关键字)。 要返回多行语句(例如对象文本),需要使用()而不是{ }来包裹函数体。...要执行参数分配,可以使用if语句抛出未定义的错误,或者可以利用“强制参数”。
ES6 向我们介绍了许多强大的功能,如箭头函数,模板字符串,对象结构,模块等,让我们来看看。 const and let const 是 ES6 中用于声明变量的新关键字。...这是旧语法和 ES6 之间的巨大差异。使用字符串时,ES6 中的文字字符串看起来比 ES5 更有条理,结构更好。 默认参数 忘记编写参数时,它不会返回未定义的错误,因为该参数已在默认值中定义。...数组和对象解构 解构使得将数组或对象的值分配给新变量更容易。...使用 ES6,我们只需将我们的值放在大括号中以获取对象的任何属性。 注意:如果指定的变量与属性名称不同,则返回 undefined。...Class 类是面向对象编程(OOP)的核心。它们使您的代码更安全和封装。使用类可以为代码提供一个很好的结构并使其保持面向对象。
302 为什么需要避免 with 语句? 303 以下 for 循环的输出是什么? 304 列出 ES6 的一些特性? 305 什么是 ES6?...315 解构赋值中的默认值是什么? 316 你如何在解构赋值中交换变量? 317 什么是增强的对象字面量? 318 什么是动态导入? 319 动态导入的用例是什么?...有 3 种可能的方法来检查字符串是否包含子字符串, 1.使用 includes: ES6 提供的String.prototype.includes方法来测试字符串是否包含子字符串 var mainString...返回子字符串的索引。...以下是使用动态导入而不是静态导入的一些用例, 按需或有条件地导入模块。
领取专属 10元无门槛券
手把手带您无忧上云