ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

核心 JavaScript 热身(第 1 部分)

2022-09-01 11:04:28  阅读:453  来源: 互联网

标签:javascript log 核心 函数 JavaScript 热身 控制台 foo 21


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有