开发人员必须了解的7个【javaScript】概念

简介: 截至2022年,JavaScript目前是世界上最常用的语言。它被95%的网站使用,无论是小型初创公司还是大公司。他们中的一些人正在开发特定的网站或应用程序,需要对这种语言有很强的理解。

截至2022年,JavaScript目前是世界上最常用的语言。它被95%的网站使用,无论是小型初创公司还是大公司。他们中的一些人正在开发特定的网站或应用程序,需要对这种语言有很强的理解。

有大量的框架和库可供javascript用户使用。如果你能理解Javascript的基础知识,你就可以很容易地学习这些框架和库。对于一些开发人员来说,有几个概念令人困惑和压倒性,但从长远来看,学习这些Javascript概念将使您受益。不仅如此,学习这些JavaScript概念将帮助您构建任何类型的应用程序并学习任何框架和库。

【学习JavaScript】将在2022年派上用场。它也将在面试中为您提供帮助。因此,事不宜迟,让我们讨论一些每个JavaScript开发人员都应该知道的基本JavaScript概念。

作用域

作用域代表变量访问。那么,问题是,当代码运行时,我可以访问哪个变量?但是,在 Javascript 中,默认情况下,您始终处于根作用域(窗口作用域)中。这些边界限制变量并确定您是否有权访问它们。它将变量的可见性或可用性限制为代码的其他部分。了解此概念将帮助您分离代码中的逻辑并提高可读性。我们可以通过两种方式定义范围:

  • 本地范围:它使您可以访问盒子内边界内的所有内容。
  • 全球范围: 它使您可以访问框外边界之外的所有内容。除非您返回本地作用域,否则它无法访问在局部作用域中定义的变量,因为它是与外部世界封闭的。

Async &Await

网络异常,图片无法展示
|

Async和waitue本质上是Promises之上的语法糖,它们提供了保持异步操作更同步运行的方法,就像Promises一样。因此,您可以通过多种方式处理javascript中的异步操作:

  • ES5 ->回调
  • ES6 ->承诺
  • ES7 -> Async & Await

如果您希望等待数据完全加载后再显示数据,则可以使用 Async/Await 执行 Rest API 请求。它们是NodeJS和浏览器程序员的语法改进。它帮助开发人员在Javascript中实现函数式编程,并使代码更具可读性。

回调

调用函数时,它必须等待另一个函数执行或返回值,从而创建函数链。因此,回调通常用于javascript的异步操作中以提供同步功能。立即调用的函数表达式是定义后立即运行的函数。它们主要用于避免污染全局作用域。后来,ES6模块被引入,提供了一种避免全局作用域污染的标准方法,尽管有些人认为它不是IIFEs的直接替代品。

闭 包

网络异常,图片无法展示
|

简单地说,闭包是另一个函数中的函数,可以访问外部函数变量。定义本身似乎很简单,但范围使这个定义是唯一的。内部函数(闭包)可以访问在其作用域中定义的变量(在大括号之间定义的变量)、其父函数以及全局变量内部的变量。现在,您需要记住,外部函数无法访问内部函数变量。闭包很难理解。但是一旦理解了,你就会开始看到JavaScript的美了。网上有丰富的资源。只要确保你花时间学习闭包。

闭包允许你在内部作用域中访问外部函数的作用域。每次创建函数时,都会创建JavaScript闭包。

了解应该使用闭包的原因,以便更深入地理解它们。

类和工厂

JavaScript不是面向对象的语言。但是,为了模拟OOP属性,使用了构造函数。根据Tania的说法,“JavaScript中的类实际上并不提供额外的功能,通常被描述为在原型和继承之上提供语法糖,因为它们提供了更干净、更优雅的语法。其他编程语言都使用类,所以JavaScript中的类语法使得开发人员在不同语言之间的转换更加简单。”

工厂函数是一个不是类或构造函数但是返回对象的函数。JS大师Eric Elliot说:“在JavaScript中,任何函数都可以返回一个新对象。当它不是构造函数或类时,就称为工厂函数。”

你应该对这两个概念有很好的理解,特别是当你开始开发规模较大的应用程序时。

IIFE(立即调用的函数表达式)

网络异常,图片无法展示
|

顾名思义,IIFE是一个Javascript函数,在定义时立即被调用和执行。IIFE中声明的变量不能被外部世界访问,从而防止全局范围受到污染。因此,IIFE主要用于代码的即时执行和数据隐私。通过理解IIFEs和模块,你在开发应用程序中,可以遇到更少的由于全局作用域处理不当而导致的错误。然而,使用模块,你可以做很多事情。

Promise

网络异常,图片无法展示
|

当您需要启动两个或多个背对背操作(或链调用)时,Promise在异步javascript操作中很有用,其中每个后续函数都在前一个函数完成后调用。Promise是一个对象,它很快就会产生一个值,要么是已解决的值,要么是无法解析(拒绝)的原因。

Promise可以存在于以下三种状态之一:

  • 实现:操作完全成功
  • 拒绝:失败的操作
  • 待定:早期状态,既不履行也不拒绝。

挂起的Promise可以用值来履行,也可以用原因(错误)拒绝。当这两个选项中的任何一个发生时,将调用由 promise 的方法排队的关联处理程序。如果在附加相应的处理程序时已实现或拒绝Promise,则将调用该处理程序,因此异步操作完成与其正在附加的处理程序之间没有争用条件。then

当 和 方法返回 promise 时,它们可以被链接起来。Promise.prototype.then()``Promise.prototype.catch()

ℹ️注意:其他几种语言具有用于延迟计算和延迟计算的机制,它们也称为“promises”,例如Scheme。JavaScript 中的承诺表示已经发生的进程,这些进程可以用回调函数链接。如果您希望懒惰地计算表达式,请考虑使用没有参数的函数,例如 以创建延迟计算的表达式,并立即计算表达式。f = () => expression``f()

ℹ️注意:如果Promise得到履行或拒绝,但未被搁置,则称为已解决。您还将听到与Promise一起使用的术语“已解决” - 这意味着Promise已解决或“锁定”以匹配另一个Promise的状态。状态和命运包含有关Promise术语的更多详细信息。

相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
74 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
5月前
|
设计模式 JavaScript 前端开发
在JavaScript中,继承是一个重要的概念,它允许我们基于现有的类(或构造函数)创建新的类
【6月更文挑战第15天】JavaScript继承促进代码复用与扩展,创建类层次结构,但过深的继承链导致复杂性增加,紧密耦合增加维护成本,单继承限制灵活性,方法覆盖可能隐藏父类功能,且可能影响性能。设计时需谨慎权衡并考虑使用组合等替代方案。
47 7
|
1月前
|
设计模式 JavaScript 前端开发
探索JavaScript中的闭包:从基础概念到实际应用
在本文中,我们将深入探讨JavaScript中的一个重要概念——闭包。闭包是一种强大的编程工具,它允许函数记住并访问其所在作用域的变量,即使该函数在其作用域之外被调用。通过详细解析闭包的定义、创建方法以及实际应用场景,本文旨在帮助读者不仅理解闭包的理论概念,还能在实际开发中灵活运用这一技巧。
|
1月前
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
38 4
|
1月前
|
缓存 JavaScript 前端开发
深入了解JavaScript的闭包:概念与应用
【10月更文挑战第8天】深入了解JavaScript的闭包:概念与应用
|
1月前
|
前端开发 JavaScript 程序员
【从前端入门到全栈】Node.js 之核心概念
【从前端入门到全栈】Node.js 之核心概念
|
1月前
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript中的闭包:概念与应用
【10月更文挑战第8天】深入理解JavaScript中的闭包:概念与应用
|
2月前
|
自然语言处理 JavaScript 前端开发
探索JavaScript中的闭包:从基础概念到实际应用
本文深入探讨了JavaScript中闭包的概念,从定义、作用域链和实际应用等方面进行了详细阐述。通过生动的比喻和实例代码,帮助读者理解闭包在函数执行上下文中的重要性,以及如何在实际开发中有效利用闭包解决复杂问题。同时,文章也指出了过度使用闭包可能导致的潜在问题,并给出了相应的优化建议。
|
3月前
|
JavaScript 前端开发
js bom的概念
js bom的概念
35 1
|
3月前
|
JavaScript 前端开发
JavaScript BOM 的概念(浏览器对象模型)
JavaScript BOM 的概念(浏览器对象模型)
51 1
下一篇
无影云桌面