核心 JavaScript 热身(第 1 部分)
2022/9/2 1:25:42
本文主要是介绍核心 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 部分)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22Java创业学习:初学者的全面指南
- 2024-11-22JAVA创业学习:零基础入门到实战应用教程
- 2024-11-22Java创业学习:从零开始的Java编程入门教程
- 2024-11-22Java对接阿里云智能语音服务学习教程
- 2024-11-22JAVA对接阿里云智能语音服务学习教程
- 2024-11-22Java对接阿里云智能语音服务学习教程
- 2024-11-22Java副业学习:零基础入门到实战项目
- 2024-11-22Java副业学习:零基础入门指南
- 2024-11-22Java微服务学习:入门与实践指南
- 2024-11-22JAVA项目部署学习:从入门到实践