核心 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

posted @ 2022-09-01 10:51  哈哈哈来了啊啊啊  阅读(38)  评论(0)    收藏  举报