核心 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,log,核心,函数,JavaScript,热身,控制台,foo,21 来源: https://www.cnblogs.com/amboke/p/16645740.html