」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 什麼是 JavaScript?一種定義涵蓋一切。

什麼是 JavaScript?一種定義涵蓋一切。

發佈於2024-08-20
瀏覽:919

What is JavaScript? One Definition to Cover It All.

这可能会在面试中被问到,也可能不会被问到,但相信我,一旦你读完这篇文章,你就会更好地理解 JS 术语。 (在面试过程中使用这个布朗尼积分)。

这是前端面试问题系列的第 3 个问题。如果您希望提高准备水平或保持最新状态,请考虑加入前端训练营的候补名单。


JavaScript 是一种单线程、动态类型、解释性编程语言,支持多种范式,包括面向对象、函数式和命令式风格。它具有基于原型的面向对象和事件驱动的架构。

这是 JavaScript 的书呆子定义。但每个术语的含义是什么?让我们来了解一下。

单线程

JavaScript 是一种单线程语言,这意味着它只有一个主执行线程。这也意味着它有一个调用堆栈。当进行函数调用时,它将添加到调用堆栈的顶部。一旦执行完成,它就会从堆栈中弹出,并且控制权将移至调用堆栈中的下一个函数。按顺序执行任务是 JavaScript 本质的基础,但它确实提供了执行异步操作的 API(例如 fetch 和 setTimeout )。

动态类型

在 JavaScript 中,变量不是用类型显式声明的。类型与值相关联,而不是与运行时推断的变量相关联。类型也可以在程序的生命周期中发生变化。此功能使 JS 变得灵活,但它可能容易出现与类型相关的错误。像 TypeScript 这样的工具有助于在开发过程中添加静态类型,但它最终会编译为 JS。

解释性编程语言

与 Java 等编译语言不同,JavaScript 在执行之前不会编译成机器代码。相反,代码在运行时被逐行读取、解释和执行。然而,为了提高性能,现代 JavaScript 引擎使用即时 (JIT) 编译,即时编译代码块。这种方法提高了执行速度。

面向对象

这种编程范例将代码组织成对象,对象是类或原型的实例。 ES6 中引入了 class 关键字作为语法糖。在底层,JavaScript 中的类仍然使用原型。这种 OOP 实现对于 JavaScript 来说是独一无二的。

功能性

它是一种编程范例,通过强调函数的使用来促进编写声明性代码。一些关键概念是:

  1. 纯函数:对于给定输入始终产生相同输出并且没有副作用的函数。
  2. 高阶函数:可以将其他函数作为参数或将它们作为结果返回的函数。
  3. 不变性:将数据视为不可变,尽管 JavaScript 默认情况下不强制执行此操作。
  4. 一等函数:函数被视为一等公民,这意味着它们可以分配给变量、作为参数传递或从其他函数返回。
  5. 函数组合:通过组合更简单的函数来构建复杂的功能。

JavaScript 支持这些函数式编程概念以及其他范例,允许开发人员在适当的情况下使用函数式技术。

至关重要的

命令式编程是一种范例,其中代码明确描述了程序为达到所需状态而必须执行的步骤序列。 JavaScript 完全支持编写命令式代码所需的所有必要结构,例如变量、循环、条件和运算符。这种方法可以精确控制程序的执行流程。它通常用于实现算法和管理复杂的状态变化。

基于原型的定位

JavaScript 使用基于原型的对象模型,这是面向对象编程的一种形式,其中对象是主要实体。与基于类的语言不同,JavaScript 使用原型来实现继承并在对象之间共享属性和方法。

JavaScript 中基于原型的方向的关键方面包括:

  1. 对象创建:可以直接创建对象,无需先定义类。

  2. 原型链:每个对象都有一个到另一个对象的链接,称为其原型。如果在对象上找不到属性或方法,JavaScript 会在原型中查找它,然后在原型的原型中查找,依此类推。

  3. 继承:对象可以通过原型链从其他对象继承属性和方法。

这个基于原型的系统允许强大而灵活的面向对象编程。

事件驱动架构

JavaScript 基于事件的架构是一种编程方法,其中程序的流程由用户操作、传感器输出或来自其他程序的消息等事件确定。这是 JavaScript 如何与 Web 浏览器交互并处理异步操作的基础。

JavaScript 基于事件的架构的关键方面包括:

  1. 事件监听器:“监听”特定事件并在这些事件发生时执行的函数。

  2. 事件循环:检查事件并将其分派给侦听器的连续过程。

  3. 异步编程:允许代码运行而不阻塞主线程,这对于响应式 Web 应用程序至关重要。

这种架构使 JavaScript 能够高效地处理用户交互、API 调用、计时器和其他异步操作,使其非常适合创建交互式 Web 应用程序。

所有这些概念相结合,使 JavaScript 成为一种多功能语言,可以在 Web、移动、服务器和 AR 等各种平台上使用。


笔记

在您的面试中,请记住这个定义:

JavaScript 是一种单线程、动态类型和解释编译语言。它是一种跨平台语言,但主要用于网络上,为页面添加交互性。

资源

前端营地
Javascript 是单线程语言是什么意思
解释型与编译型编程语言

版本聲明 本文轉載於:https://dev.to/thesanjeevsharma/what-is-javascript-one-definition-to-cover-it-all-43l2?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Polyfills-填充物還是縫隙? (第 1 部分)
    Polyfills-填充物還是縫隙? (第 1 部分)
    幾天前,我們在組織的 Teams 聊天中收到一條優先訊息,內容如下:發現安全漏洞 - 偵測到 Polyfill JavaScript - HIGH。 舉個例子,我在一家大型銀行公司工作,你必須知道,銀行和安全漏洞就像主要的敵人。因此,我們開始深入研究這個問題,並在幾個小時內解決了這個問題,我將在下...
    程式設計 發佈於2024-11-05
  • 移位運算子與位元簡寫賦值
    移位運算子與位元簡寫賦值
    1。移位運算子 :向右移動。 >>>:無符號右移(零填充)。 2.移位運算子的一般語法 value > num-bits:將值位向右移動,保留符號位。 value >>> num-bits:透過在左側插入零將值位向右移動。 3.左移 每次左移都會導致該值的所有位元向左移動一位。 右側插入0...
    程式設計 發佈於2024-11-05
  • 如何使用 VBA 從 Excel 建立與 MySQL 資料庫的連線?
    如何使用 VBA 從 Excel 建立與 MySQL 資料庫的連線?
    VBA如何在Excel中連接到MySQL資料庫? 使用VBA連接到MySQL資料庫嘗試連接使用 VBA 在 Excel 中存取 MySQL 資料庫有時可能具有挑戰性。在您的情況下,您在嘗試建立連線時遇到錯誤。 若要使用 VBA 成功連線至 MySQL 資料庫,請依照下列步驟操作:Sub Connec...
    程式設計 發佈於2024-11-05
  • 測試自動化:使用 Java 和 TestNG 進行 Selenium 指南
    測試自動化:使用 Java 和 TestNG 進行 Selenium 指南
    测试自动化已成为软件开发过程中不可或缺的一部分,使团队能够提高效率、减少手动错误并以更快的速度交付高质量的产品。 Selenium 是一个用于自动化 Web 浏览器的强大工具,与 Java 的多功能性相结合,为构建可靠且可扩展的自动化测试套件提供了一个强大的框架。使用 Selenium Java 进...
    程式設計 發佈於2024-11-05
  • 我對 DuckDuckGo 登陸頁面的看法
    我對 DuckDuckGo 登陸頁面的看法
    「為什麼不穀歌一下呢?」是我在對話中得到的常見答案。谷歌的無所不在甚至催生了新的動詞「Google」。但是我寫的程式碼越多,我就越質疑我每天使用的數位工具。也許我對谷歌使用我的個人資訊的方式不再感到滿意。或者我們很多人依賴谷歌進行互聯網搜索和其他應用程序,說實話,我厭倦了在搜索某個主題或產品後彈出的...
    程式設計 發佈於2024-11-05
  • 為什麼 Turbo C++ 的「cin」只讀取第一個字?
    為什麼 Turbo C++ 的「cin」只讀取第一個字?
    Turbo C 的「cin」限制:僅讀取第一個單字在Turbo C 中,「cin」輸入運算符有一個處理字元數組時的限制。具體來說,它只會讀取直到遇到空白字元(例如空格或換行符)。嘗試讀取多字輸入時,這可能會導致意外行為。 請考慮以下 Turbo C 代碼:#include <iostream....
    程式設計 發佈於2024-11-05
  • 使用 Buildpack 建立 Spring Boot 應用程式的 Docker 映像
    使用 Buildpack 建立 Spring Boot 應用程式的 Docker 映像
    介绍 您已经创建了一个 Spring Boot 应用程序。它在您的本地计算机上运行良好,现在您需要将该应用程序部署到其他地方。在某些平台上,您可以直接提交jar文件,它将被部署。在某些地方,您可以启动虚拟机,下载源代码,构建并运行它。但是,大多数时候您需要使用容器来部署应用程序。大...
    程式設計 發佈於2024-11-05
  • 如何保護 PHP 程式碼免於未經授權的存取?
    如何保護 PHP 程式碼免於未經授權的存取?
    保護PHP 代碼免於未經授權的訪問保護PHP 軟體背後的智慧財產權對於防止其濫用或盜竊至關重要。為了解決這個問題,可以使用多種方法來混淆和防止未經授權的存取您的程式碼。 一個有效的方法是利用 PHP 加速器。這些工具透過快取頻繁執行的部分來增強程式碼的效能。第二個好處是,它們使反編譯和逆向工程程式碼...
    程式設計 發佈於2024-11-05
  • React:了解 React 的事件系統
    React:了解 React 的事件系統
    Overview of React's Event System What is a Synthetic Event? Synthetic events are an event-handling mechanism designed by React to ach...
    程式設計 發佈於2024-11-05
  • 為什麼在使用 Multipart/Form-Data POST 請求時會收到 301 Moved Permanently 錯誤?
    為什麼在使用 Multipart/Form-Data POST 請求時會收到 301 Moved Permanently 錯誤?
    Multipart/Form-Data POSTsMultipart/Form-Data POSTs嘗試使用multipart/form-data POST 資料時,可能會出現類似所提供的錯誤訊息遭遇。理解問題需要檢視問題的構成。遇到的錯誤是 301 Moved Permanently 回應,表示資...
    程式設計 發佈於2024-11-05
  • 如何使用日期和時間物件來確定 PHP 中的時間邊界?
    如何使用日期和時間物件來確定 PHP 中的時間邊界?
    確定PHP 中的時間邊界在此編程場景中,我們的任務是確定給定時間是否在預先定義的範圍內。具體來說,我們得到三個時間字串:當前時間、日出和日落。我們的目標是確定當前時間是否位於日出和日落的邊界時間之間。 為了應對這個挑戰,我們將使用 DateTime 類別。這個類別使我們能夠表示和操作日期和時間。我們...
    程式設計 發佈於2024-11-05
  • 如何使用 CSS 變換比例修復 jQuery 拖曳/調整大小問題?
    如何使用 CSS 變換比例修復 jQuery 拖曳/調整大小問題?
    jQuery 使用CSS 轉換縮放拖曳/調整大小問題: 當應用CSS 轉換時,特別是變換:矩陣(0.5, 0, 0, 0.5, 0, 0);,對於一個div 並在子元素上使用jQuery 的draggable() 和resizing() 插件,jQuery 所做的更改變得與滑鼠位置「不同步”。 解決...
    程式設計 發佈於2024-11-05
  • 如何修復 TensorFlow 中的「ValueError:無法將 NumPy 陣列轉換為張量(不支援的物件類型浮點)」錯誤?
    如何修復 TensorFlow 中的「ValueError:無法將 NumPy 陣列轉換為張量(不支援的物件類型浮點)」錯誤?
    TensorFlow:解決「ValueError: Failed to Convert NumPy Array to Tensor (Unsupported Object Type Float)」工作時遇到的常見錯誤TensorFlow 的錯誤是「ValueError:無法將NumPy 陣列轉換為T...
    程式設計 發佈於2024-11-05
  • 如何有效率判斷本機儲存項目是否存在?
    如何有效率判斷本機儲存項目是否存在?
    確定本地儲存專案是否存在使用 Web 儲存時,在存取或修改特定專案之前驗證它們是否存在至關重要。在本例中,我們想要確定 localStorage 中是否設定了特定項目。 當前方法檢查項目是否存在的當前方法似乎是:if (!(localStorage.getItem("infiniteScr...
    程式設計 發佈於2024-11-05
  • Java 中的原子是什麼?了解 Java 中的原子性和線程安全
    Java 中的原子是什麼?了解 Java 中的原子性和線程安全
    1. Java 原子簡介 1.1 Java 中什麼是原子? 在Java中,java.util.concurrent.atomic套件提供了一組支援對單一變數進行無鎖定線程安全程式設計的類別。這些類別統稱為原子變數。最常使用的原子類別包括 AtomicInteger ...
    程式設計 發佈於2024-11-05

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3