”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Javascript 很难(有悲伤)

Javascript 很难(有悲伤)

发布于2024-11-06
浏览:335

Javascript is HARD (with ESadness)

这将是一个很长的阅读,但让我再说一遍。
JAVASCRIPT很难。上次我们见面时,我正在踏入 Javascript 的世界,一个眼睛明亮、充满希望的程序员踏入野生丛林,说“这能有多难?”。我错得有多离谱??事情变得更难了,我(勉强)活了下来,这是关于我的旅程的一个小混乱的故事。

变量:疯狂的开始
变量是保存值的容器,您可以在其中存储或操作数据。我的意思是,为什么我们有 3 种方法来创建它们:var、let 和 const?为什么? 在 ES6 中笑
var:他们说 var 是一门松散的大炮。就像玩机会游戏一样。别靠近它。
let:非常适合可以更改的变量。更容易管理。
Const:用于保持不变的值。不可移动的。哦 - const 并不意味着该值不能改变,它只是意味着你不能重新分配它。
注: ECMAScript 2015 或 ES6 是 JavaScript 的第二次重大修订。
哦,我们告别了字符串连接,你好模板文字。使用模板文字您现在可以使用反引号并通过 ${} 轻松嵌入变量。生活在这里变得容易了一些,但是弄清楚何时使用反引号和引号?又一个脑洞大开的。

// Good old concat
const message = "Hi, "   name   ". You are "   age   " years old.";
// Template literal
const message = `Hi, ${name}! You are ${age} years old.`;

功能:又名可重用性先生、可维护性先生...
函数是执行任务的一组语句。由函数关键字、函数名、是否有参数、大括号内的Js语句组成。

function greet() {
  console.log("Hello, fellow strugglers?!");
}

它们一开始看起来很简单:封装一些逻辑,调用它(我说调用它),然后繁荣!你正在编码。
然后ES6说“这是箭头函数,使用它”。箭头函数看起来很简单吧?只是编写函数的一种简短方法。花了一段时间我才掌握了语法。

const greet = () => {
   console.log("Hello, fellow strugglers?!");
}

循环:与无限共舞。
受苦的多种方式。循环可以多次执行一段代码。如果您想一遍又一遍地运行相同的代码,并且每次都使用不同的值,那么它们很方便。他们有很多:
1. While Loop:只要条件为真就一直循环。邪恶的。我不是在谈论它的表弟 do-while。
2. for 循环: 好老的 for 循环,老兄。值得信赖的 for 循环。如此熟悉。非常安全,并且当您忘记递增变量时很有可能引发无限循环。
3. forEach: 这就像 for 循环更酷、更时髦的表弟。它不需要计数器,也不会让我走向无限。我的男人。
4. & 5. for..in 和 for..of:一个非常适合循环对象,另一个则用于迭代数组。我不断地把它们混在一起,并通过痛苦来学习。还在学习中。

//for loop
for (let i = 0; i  console.log(num));

数组:不断寻找的列表
数组一开始很有希望。一个简单的项目列表。把东西推进去,把东西拉出来。很简单吧?

let shoppingList = ["apples", "bananas", "chocolate"];
shoppingList.push("ice cream");
console.log(shoppingList); // ['apples', 'bananas', 'chocolate', 'ice cream']

输入filter、map、find以及数组方法组的其余部分。从那以后我的大脑就不一样了。
filter() 方法创建一个新数组,其中填充了通过函数提供的测试的元素。
find() 方法返回通过测试的第一个元素的值。数组方法太多了,每个方法都需要文档吗?我的意思是有长度、拼接、切片、连接、弹出、推送、unshift、shift、map..,让我们到此为止。

let numbers = [1, 2, 3, 4, 5];
let evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4]

对象:数组的令人困惑的表亲
然后是物体。对象有点像数组,但具有键和值。我当时想,“酷,我能处理这个。”但后来 JavaScript 引入了方法,突然间对象就可以自己做事了。然后对象数组就进入了方程式。访问属性我使用点符号或方括号符号。别让我从 .this
开始

//Without method
let shoppingCart = {
  apples: 3,
  bananas: 2,
  chocolate: 1
};
// with method
let cart = {
  items: ["apple", "banana"],
  addItem(item) {
    this.items.push(item);
  }
};
cart.addItem("chocolate");
console.log(cart.items); // ['apple', 'banana', 'chocolate']

DOM 操作:真正的斗争开始的地方
一旦我对数组和对象充满信心,我就想:“是时候操作 DOM 了!我现在几乎是一名网络开发人员了!”耶哥蕊特有句名言,你什么都不知道。
这应该很容易,我又说了一遍。只需抓取一个元素并更改它即可。如果它是一个 ID,getElementbyId 就适合我。 getElementsbyClassName 类也存在,或者是 queryselector 以及其所有兄弟的类。
然后就是整个 addEventListener 业务。当然,这确实有效,但有时,事件似乎有自己的想法一样。
然后我尝试创建一个购物车。我花了几天的时间,向我博学的同事发出了很多求救信号。这里我是appendChild、removeChild、createElements、抓取元素、设置属性、样式、在函数上调用函数。
然后大胆的添加了mock数据库;我又和数组操作了。我正在访问,我正在推动,我正在寻找,我累了(再次站起来)。

进出口:大胆分享疯狂??
在某个时候,我编写了太多的 JavaScript,以至于我需要模块化我的代码。输入导入和导出。

Copy code
// module.js
export function greet() {
  console.log("Hello from the module!");
}

// main.js
import { greet } from './module.js';
greet();

我认为将我的代码分成更小的部分会让事情变得更容易。我几乎不知道,我最终会陷入一片混乱。

现在我要开始面向对象编程(OOP)听起来很花哨,但是让我先享受我的周末,然后再迷路。
感谢您坚持到最后。目标仍然是每天进步 1%。 #ES6 #CodingStruggles #WebDevelopment #JavaScriptMadness #ProgrammingHumor #LearnToCode

版本声明 本文转载于:https://dev.to/rockhillz/javascript-is-hard-with-es6-madness-47j9?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    编程 发布于2025-05-09
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 考虑文档中给出的示例:这是内部发生的事情: 现在在3月3日添加另一个月,因为2月在2001年只有2...
    编程 发布于2025-05-09
  • 在PHP中如何高效检测空数组?
    在PHP中如何高效检测空数组?
    在PHP 中检查一个空数组可以通过各种方法在PHP中确定一个空数组。如果需要验证任何数组元素的存在,则PHP的松散键入允许对数组本身进行直接评估:一种更严格的方法涉及使用count()函数: if(count(count($ playerList)=== 0){ //列表为空。 } 对...
    编程 发布于2025-05-09
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-05-09
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-05-09
  • 为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    查询模式实现缺失:解决“无法找到”错误在Silverlight应用程序中,尝试使用LINQ建立LINQ连接以错误而实现的数据库”,无法找到查询模式的实现。”当省略LINQ名称空间或查询类型缺少IEnumerable 实现时,通常会发生此错误。 解决问题来验证该类型的质量是至关重要的。在此特定实例中...
    编程 发布于2025-05-09
  • `console.log`显示修改后对象值异常的原因
    `console.log`显示修改后对象值异常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    编程 发布于2025-05-09
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的Python功能Eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-05-09
  • 如何在Chrome中居中选择框文本?
    如何在Chrome中居中选择框文本?
    选择框的文本对齐:局部chrome-inly-ly-ly-lyly solument 您可能希望将文本中心集中在选择框中,以获取优化的原因或提高可访问性。但是,在CSS中的选择元素中手动添加一个文本 - 对属性可能无法正常工作。初始尝试 state)</option> < op...
    编程 发布于2025-05-09
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-05-09
  • 在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    mysql-python安装错误:“ mysql_config找不到”“ 由于缺少MySQL开发库而出现此错误。解决此问题,建议在Ubuntu上使用该分发的存储库。使用以下命令安装Python-MysqldB: sudo apt-get安装python-mysqldb sudo pip in...
    编程 发布于2025-05-09
  • 如何在鼠标单击时编程选择DIV中的所有文本?
    如何在鼠标单击时编程选择DIV中的所有文本?
    Programmatically Selecting DIV Text on Mouse ClickQuestionGiven a DIV element with text content, how can the user programmatically select the entire t...
    编程 发布于2025-05-09
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-05-09
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-05-09
  • Java中假唤醒真的会发生吗?
    Java中假唤醒真的会发生吗?
    在Java同步中伪装唤醒的概念已经是讨论的主题。尽管存在这种行为的潜力,但问题仍然存在:它们实际上是在实践中发生的吗? Linux的唤醒机制根据Wikipedia关于伪造唤醒的文章,linux实现了pthread_cond_wait()功能的Linux实现,利用了Futex System Call...
    编程 发布于2025-05-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3