Java教程

核心 JavaScript 热身(第 1 部分)

本文主要是介绍核心 JavaScript 热身(第 1 部分),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

核心 JavaScript 热身(第 1 部分)

在本文中,我们将看到一些 javascript 问题来预热和强化您的 javascript 核心概念。我们将它作为一个系列开始,您将在其中找到不同的问题列表及其解决方案。

让我们从一些令人惊奇的问题开始。

Photo by Towfiqu barbhuiya on 不飞溅

问题 1

以下代码的输出是什么?

**功能** 富(){  
 让 a = 1;  
 返回 **功能** () {  
 让 b = 1;  
 控制台.log(++a, ++b);  
 }  
 }  
 常量条 = **富();** **酒吧();  
 酒吧();**

提示:这是一个闭包函数

输出:

 2 2  
 3 2

酒吧() 代表“ 闭包函数” 定义在 foo.
闭包总是记住它的词法范围”
的价值 ' 一个' 始终由 bar() 维护和引用;
而对于 ' b' 它总是在函数调用时初始化并保持不变。
所以每次调用函数时它都会初始化为1。

问题2

 让 obj = {  
 富:“嘘”,  
 A: **功能** () {  
 var b = 这个;  
 控制台.log(this.foo);  
 控制台.log(b.foo);  
 ( **功能** () {  
 控制台.log(this.foo);  
 控制台.log(b.foo);  
 })();  
 }  
 } **obj.a();**

提示:这是一个 IIFE 函数

输出:

IIFE 是一个独立的函数,对于它来说,'this' 将是一个全局变量。
所以输出是

**嘘  
 嘘  
 不明确的  
 嘘**

问题 3

实现以下给定代码示例的代码。
(使 calc 可以具有这些给定函数,该函数将总计作为给定操作的值返回)

 常量结果 = calc.add(10).multiply(10).subtract(5).add(2);  
 控制台.日志(结果。总计); // 97

提示:您可以创建一个可重用的函数,而无需相互嵌套函数。

解决方案

 常量计算 = {  
  **全部的** : 0,  
  **添加** : **功能** (一个) {  
 this.total += a;  
 返回这个;  
 },  
  **乘** : **功能** (一个) {  
 this.total *= a;  
 返回这个;  
 },  
  **减去** : **功能** (一个) {  
 this.total -= a;  
 返回这个;  
 }  
 }

问题 4

以下代码的输出是什么?

 让 x = 真;  
 让计数 = 0; 设置超时(()=> {  
 x = 假;  
 }, 2000); setInterval(() => {  
 如果 (x) {  
 控制台日志(计数++)  
 }  
 }, 200);

提示:'x' 将在 2 秒后为假,直到 setInterval 可以执行。

输出:

 0  
 1  
 2  
 3  
 4  
 5  
 6  
 7  
 8 因为,计数器将增加 200 毫秒。  
 所以,直到条件变为 ** _错误的_** 这将需要 2000 毫秒。  
 因此,它将总共打印 9 次 = 1800 毫秒(每次 200 毫秒),最后一次在 2000 毫秒时条件为假。

问题 5

以下代码的输出是什么?

 变量 x = 21;  
 var fun1 = 函数 () {  
 控制台.log(x);  
 变量 x = 20;  
 } 乐趣1();

提示:在javascript中称为提升

笔记: 对于那些不熟悉 javascript 中的提升的人来说,提升是您在声明之前访问任何变量或函数的情况

吊装示例

 控制台.log(x); // x 未定义,因为它被声明为 'var'  
 变量 x = 10; 控制台.log(y);  
 让 y = 10; // y 将抛出引用错误,因为它被声明为 'let' 并且 'let' 在临时死区中被提升 控制台.log(z);  
 常数 z = 10; // z 也会抛出引用错误,因为它被声明为 'const' 并且 'const' 在时间死区中被提升

输出:

 它既不是 20 也不是 21,而是未定义。 在这里,我们想用 20 遮蔽 x 的值,但在分配之前 **它将被提升并且 var 的默认值未定义** . 你们中的许多人可能会说它是 var,因为它具有全局访问权限,而 x 在全局范围内是 21,那么为什么它没有记录为 21。  
 这背后的原因是如果您删除 x = 20;从 **乐趣1()** 那么它将不再被提升,因此它将记录为 21。  
 但是,我们将它全局声明为 21,但我们仍然在 fun1() 中提升它,这就是为什么它被提升为未定义的默认值。

结论

我希望你喜欢阅读并学习新的东西。我们已经开始了这个系列,并将涵盖更多示例/问题,以帮助 javascript 开发人员更深入地了解核心概念并帮助复习高级概念。我已经阅读了常见的 javascript 错误和最佳实践 第1部分 和 第2部分 涵盖更多概念以加强您的核心概念。

如有任何建议、意见或疑问,请随时通过评论与我联系。谢谢你。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/7830/51020110

这篇关于核心 JavaScript 热身(第 1 部分)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!