”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 什么是 JavaScript?一种定义涵盖一切。

什么是 JavaScript?一种定义涵盖一切。

发布于2024-08-20
浏览:133

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]删除
最新教程 更多>
  • 如何配置Pytesseract以使用数字输出的单位数字识别?
    如何配置Pytesseract以使用数字输出的单位数字识别?
    Pytesseract OCR具有单位数字识别和仅数字约束 在pytesseract的上下文中,在配置tesseract以识别单位数字和限制单个数字和限制输出对数字可能会提出质疑。 To address this issue, we delve into the specifics of Te...
    编程 发布于2025-04-11
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-04-11
  • 对象拟合: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-04-11
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-04-11
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    在尝试为JavaScript对象创建动态键时,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正确的方法采用方括号: jsobj ['key''i] ='example'1; 在JavaScript中,数组是一...
    编程 发布于2025-04-11
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-04-11
  • 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-04-11
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call ...
    编程 发布于2025-04-11
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-04-11
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-04-11
  • 如何正确使用与PDO参数的查询一样?
    如何正确使用与PDO参数的查询一样?
    在pdo 中使用类似QUERIES在PDO中的Queries时,您可能会遇到类似疑问中描述的问题:此查询也可能不会返回结果,即使$ var1和$ var2包含有效的搜索词。错误在于不正确包含%符号。通过将变量包含在$ params数组中的%符号中,您确保将%字符正确替换到查询中。没有此修改,PDO...
    编程 发布于2025-04-11
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-04-11
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-04-11
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-04-11
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-04-11

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

Copyright© 2022 湘ICP备2022001581号-3