JS 中的基本概念

2025-06-04

JS 中的基本概念

对于初学者来说,Javascript 可能看起来很简单,因为它有类似 C 语言的语法...

然而,它的运行方式、语言(ESNext)及其框架的不断变化可能会让初学者不知所措。
我在这里是为了澄清大家对这门我认为优美的语言,但最重要的是,它是一种利润丰厚的语言的困惑。

利润丰厚,因为 JS 可以轻松完成您今天想要它做的几乎任何事情。

  • 想要构建 Web 应用程序吗?没问题。
  • 想要构建一个 CLI 工具吗?没问题。
  • 想开发桌面应用吗?哼,说起来容易做起来难!

每天可用的软件包和库的数量不断增加,这表明 JS 在构建软件应用程序时是多么抽象。

然而,JS 似乎饱受诟病,主要是因为它与竞争对手相比显得格格不入。对于那些可能忽略 JS 理论的人来说,这很令人困惑。

很多人在深入学习 JavaScript 语言之前,往往会忽略它的理论知识。这些概念可以帮助我们理解构建 JavaScript 应用程序时所采用的不同路径和模式。这些模式存在于 JS 领域的所有框架中,因此在学习 JavaScript 语言本身之前,了解这些概念非常有意义。

代码

JS 的特性

(1)多范式

JavaScript 支持过程式、面向对象和事件驱动的函数式编程!
掌握 JS 的面向对象编程风格将会非常有益。

面向对象编程帮助程序员更轻松地将软件应用程序的组件可视化。
此外,学习 Typescript(带有类型的 JavaScript)还能让程序员轻松实现业内最佳的设计模式。这些设计模式能够以最高效的方式解决软件编程中最常见的问题。

这种多功能性使得 Javascript 非常平易近人,而且功能强大。

(2)解释

Javascript 与 C/C++ 不同,它不是一次性读取整个程序,而是逐行解释执行。这意味着 JS 会比 C/C++ 等编译型语言慢。

警告: JavaScript 因其运行时极其被动而臭名昭著。错误排查极其困难。

不过,不要灰心。随着时间的推移和不断练习,你会学会如何轻松应对。最常见的错误是变量返回NULL值。当这类问题逐渐出现时,请前往 Stack Overflow,因为我向你保证,无论错误多么小众,你都不是第一个遇到错误的人。不过,console.log()在项目开发过程中,灵活使用总是一个好主意。这有助于你在程序生命周期中准确地找出变量可能失效的时机。

(3)单线程

JavaScript 一次只能执行一个任务。它会根据任务类型将不同的任务放入不同的队列中。
抽象地说,JavaScript 基本上会将同步任务和异步任务分组,并分别放入队列中。

同步任务是遇到后立即处理的语句,即立即运行。这些任务包括日志语句、变量声明、条件检查等。

异步任务涉及可能需要可变时间才能返回输出的任务。异步任务的一个例子可能是从 Web API 请求信息。

此外,Javascript 还有一个作业队列,用于处理称为 Promises 的 JS 功能。

右键单击此网页并点击“检查”选项卡,即可实际体验 JavaScript 的单线程特性。接下来,在刚刚打开的窗口中,转到“控制台”选项卡。输入以下代码并按回车键。

while(true) {}
Enter fullscreen mode Exit fullscreen mode

现在您可以观察到该页面已完全无响应。这是因为该页面上的 JavaScript 现在正忙于运行我们上面执行的无限 while 循环。

(4)非阻塞

之前我们讨论过异步任务,由于 JS 是单线程运行的,所以默认它不会等待任何人!

仅当所有同步代码块都执行完毕后,才会执行异步代码块,而不管该代码在程序中的位置如何。


console.log("I'm the first statement")

setTimeout(()=> {
console.log("I'm the second statement")
},1000)

console.log("I'm the third statement")

Enter fullscreen mode Exit fullscreen mode

这里console.log()将其中的语句打印到控制台。上面描述的
函数setTimeout()在一秒后运行第二条语句。

检查输出

I'm the first statement
I'm the third statement
I'm the second statement
Enter fullscreen mode Exit fullscreen mode

我们可以看到,第三条语句比第二条语句先打印出来。这是因为 JS 处理 Sync 和 Async 代码块的固有方法。

替代文本

(5)高层

JavaScript 是一种高级语言。高级语言可以简单地理解为它们更接近人类使用的语言。高级语言能够提供更多功能,帮助程序员更好地表达他们想要构建的内容。

JavaScript 的这种高级特性使其能够更好地服务于 Web 的客户端部分。JS 过去的主要限制在于它只能在客户端运行,无法像大多数服务器端语言那样进行文件操作。

然而,这种情况已经发生了改变NodeJS,开发人员可以使用 JavaScript 构建后端服务器。因此,只需一种语言,软件开发人员就可以同时在服务器端和客户端进行操作。这使得全栈工程师变得尤为突出。

(6)动态类型

JavaScript 是一种动态类型语言。这意味着,与 C 语言不同,在 C 语言中,我们需要为变量指定数据类型,而type-inference在 JavaScript 中,我们可以自动感知变量所持有的数据类型。

// In C variables must have datatypes. In order to change datatypes from one type to //another , we need to use type-casting
int a = 5;
char b = "a";
float c = 7.036;
Enter fullscreen mode Exit fullscreen mode

在 Javascript 中,我们分别使用let和来声明变量或常量。const

let a = 5
console.log(a) // 5
a = 'Hello World'
console.log(a) // Hello World

const b = 'JS is awesome' 
console.log(b) // JS is awesome

b = 'I changed my mind'
console.log(b) // Error: const cannot be changed
Enter fullscreen mode Exit fullscreen mode

虽然类型推断由于其易于使用而看起来像是一个优点,但对于需要类型安全作为特性的大型项目来说,它立即变成了一个缺点。

因此,较大的项目使用 TypeScript,它只是 Javascript 的包装器,提供类型、接口和各种其他功能。

学习策略

在 JS Land 中安顿下来需要一段时间,但我有一个简单的清单,可用于Minimum Requirements学习 Express 或 ReactJS 等框架。

首先,不要急于学习这些框架。慢慢掌握Vanilla Javascript。

基础知识

  1. 变量和常量
  2. 条件块(if-else)
  3. 循环(for、while、forEach)
  4. 开关盒
  5. 功能

这些是您的基本编程基础。

高级部分(最低要求)

  1. 异步/等待
  2. 承诺
  3. JavaScript 中的类
  4. Rest/Spread 语法
  5. 数组/对象迭代器
  6. 数组解构
  7. 模块(导入、导出)

在构建项目时继续学习,很快你就会对这门语言有相当深入的掌握。

文章来源:https://dev.to/aritik/essential-concepts-in-js-4bbj
PREV
11 个最佳 JavaScript 动画库🎨✨
NEXT
我在 30 多岁时转行做软件工程,同时还要照顾新生儿,问我任何事情!