当前位置: 首页 > 科技观察

33个重要的JavaScript概念,你学会了几个?

时间:2023-03-12 16:12:58 科技观察

了解这33个JavaScript概念,绝对对你未来的职业生涯大有裨益。话不多说,直接进入正题!1.调用栈调用栈是解释器(例如Web浏览器中的JavaScript解释器)用来跟踪它在调用多个函数的脚本中所处位置的机制——哪些函数当前正在运行,哪些函数已经运行从他们内部呼唤等待。2.原始类型(PrimitiveTypes)除了对象之外的所有类型都定义了不可变的值(即不能改变的值)。例如(与C语言不同),字符串是不可变的。我们将这些类型的值称为“原始值”。3.值类型和引用类型分配了非原始值的变量会得到对该值的引用。引用指向内存中对象的地址。变量实际上并不包含值。4.隐式、显式、标称、结构化和鸭子类型类型强制转换是指当一个运算符的操作数是不同类型时,其中一个将被转换为另一个操作数类型的“等价”值。5.==and===andtypeofJavaScript有两种看起来很相似,但实际上非常不同的方法可以用来测试相等性。即==和===。6.函数作用域、块作用域和词法作用域词法作用域:在词法阶段定义作用域。这取决于您在编写代码时将变量和块作用域放在哪里。函数作用域:属于该函数的所有变量在整个函数作用域内可用(其实在嵌套作用域内也是可用的)。7.表达式和语句表达式可以像语句一样工作,这就是我们也有表达式语句的原因。但是,另一方面,语句不像表达式那样工作。8.IIFE、模块和命名空间常用的函数编码模式有一个花哨的名字:Immediately-invokedFunctionExpression(立即调用的函数表达式)。或者更普遍地称为IIFE。9.消息队列和事件循环Q:JavaScript是如何实现异步和单线程的?答:JavaScript语言是单线程的,异步行为不是JavaScript语言本身的一部分,而是建立在浏览器(或编程环境)中的核心JavaScript语言之上,并通过浏览器API访问。10.setTimeout、setInterval和requestAnimationFrame我们可以决定现在不执行函数,而是稍后再执行。11、JavaScript引擎在写JS代码的时候有时会觉得有点神奇,因为开发者写的一系列字符就像变魔术一样,在浏览器中变成具体的图像、文字和动作。这一切都是JS引擎在幕后默默支持的。12.按位运算符、类型化数组和数组缓冲区好吧,从技术上讲,对于计算机来说,一切都归结为1和0。因为计算机不使用数字,也不使用字符或字符串,所以它只使用二进制数(位)。也就是说,一切都以二进制形式存储。然后计算机使用UTF-8等编码将保存的位组合映射到字符、数字或不同的符号(ELI5版本)。13.DOM和布局树文档对象模型,通常称为DOM,是使网站具有交互性的重要组成部分。它是一个允许编程语言操纵网站内容、结构和风格的界面。JavaScript是连接到Internet浏览器的DOM的客户端脚本语言。14.工厂和类JavaScript是一种基于原型的语言,这意味着对象的属性和方法可以通过具有被克隆和扩展能力的通用对象来共享。这称为原型继承,不同于类继承。15.this、call、apply和bind函数对每个JavaScript开发人员来说都非常重要,因为它们几乎在每个JavaScript库或框架中都会用到。16.new、Constructor、instanceof和Instances每个JavaScript对象都有一个原型。JavaScript中的所有对象都从它们的原型继承它们的方法和属性。17.原型继承和原型链JavaScript对于学习基于类的语言(如Java或C++)的开发人员来说可能有点混乱,因为它是动态的并且本身不提供类实现(class关键字由ES2015引入,但是是Syntactic糖,JavaScript仍然基于原型)。18.Object.create和Object.assignObject.create方法是JavaScript中创建新对象的方法之一。19.map、reduce、filter即使你不知道什么是函数式编程,你也可能一直在使用map、filter和reduce。它们对于帮助编写更清晰的逻辑非常有用。20.纯函数、函数副作用、状态突变和事件传播我们的许多错误都源于IO相关、数据突变、具有副作用的代码,然后在代码库中蔓延——从接受用户输入、通过http调用接收意外响应或写入文件系统。不幸的是,这是一个我们必须习惯的严酷现实。21.闭包闭包是将(封闭的)函数与其周围状态(词法环境)的引用捆绑在一起的组合。换句话说,闭包允许您从内部函数访问外部函数的范围。在JavaScript中,每次创建函数时都会创建闭包。22.高阶函数JavaScript可以接受高阶函数。这种处理高阶函数的能力以及其他特性使JavaScript成为非常适合函数式编程的编程语言之一。23.递归可以扩展你对函数式编程的理解。24.集合和生成器生成器函数返回一个Generator对象,它同时符合iterable协议和iterator协议。25.PromisePromise对象表示异步操作的最终完成(或失败)及其结果值。26.async/awaitasync/await是一种特殊的语法,可以更舒适地处理Promise。非常容易理解和使用。27.数据结构JavaScript每天都在发展。随着React、Angular、Vue、NodeJS、Electron、ReactNative等框架和平台的快速发展,在大型应用程序中使用JavaScript变得相当普遍。28.昂贵的操作和大O符号“什么是大O符号?”这是一个非常常见的开发人员面试问题。简而言之,它是一个数学表达式,其中算法的运行时间取决于输入时间,通常谈论最坏的情况。29.算法在数学和计算机科学中,算法是定义明确的指令的有限序列,通常用于解决特定类别的问题或执行计算。30.继承、多态和代码重用类继承是一个类扩展另一个类的一种方式,因此我们可以在现有功能之上创建新功能。31.设计模式每个开发人员都努力编写可维护、可读和可重用的代码。随着应用程序变得越来越大,代码结构变得越来越重要。设计模式被证明是解决这一挑战的关键——为特定情况下的常见问题提供一个有组织的结构。32.PartialApplication,Currying,Compose,andPipe函数组合是一种组合多个简单函数以构建更复杂函数的机制。33.干净的代码编写干净、易懂和可维护的代码是每个开发人员必须具备的技能。