-
javascript 常用设计模式
2023-12-26
67493 浏览
单例模式classAppState{counter=0;privatestaticinstanceRef:AppState;privateconstructor(){}staticgetInstance():AppState{if(AppState.instanceRef===undefined){AppState.instanceRef=newAppState();}returnAppState
-
javascript 柯里化
2023-12-26
62783 浏览
javascript柯里化是前端职位面试中最常见的问题之一。熟练掌握它不仅可以帮你通过面试,获得更好的职业机会,更直接的作用是可以让你的代码更简洁,工作更高效。如下是一个面试题:请定义一个javascript方法,实现如下输出:sum(2,3)//5sum(2)(3)//5我们可以把问题分解,对于第一种参数是2个的情况,可以这样编写函数:functionsum(a,b){returna+b;}如上
-
javascript 变量提升是什么?
2023-12-26
65211 浏览
javascript众多特性之一就是所谓的变量提升。现在,如果你是javascript编码的新手,很可能还没有熟练地编写代码。因此,对于变量提升可能也不熟悉。变量提升到底是什么?当javascript编译所有代码时,所有使用var的变量声明都被提升到它们的函数/局部作用域的顶部(如果在函数内部声明的话),或者提升到它们的全局作用域的顶部(如果在函数外部声明的话),而不管实际的声明是在哪里进行的。这
-
javascript 中的分号自动插入
2023-12-26
67635 浏览
许多编程语言都有语句结束的概念。不过,用哪个符号结束以及结束语句的规则在各个语言之间存在差异。对于javascript来说,它在这方面要求非常宽松。在javascript中语句结束符是分号,不过也可以不写。它是怎么做到的?javascript编译器是如何知道何时该结束一条语句呢?它是通过一套简单的规则和自动分号插入机制(AutomaticSemicolonInsertion,简写为ASI)实现的。
-
javascript 展开语法简介
2023-12-26
65815 浏览
展开语法是什么,为什么需要它?javascript的展开语法是在ES6规范中引入的,事实证明了它可以让代码更加简洁和容易理解。MDN文档上给的定义如下:展开语法(Spreadsyntax),可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开;还可以在构造字面量对象时,将对象表达式按key-value的方式展开。上面的文字可能有点晦涩难懂,简单来说:展开操作符是三个点(...)它
-
javascript 双问号(空值合并运算符)
2023-12-26
69040 浏览
你在网上浏览javascript代码时,可能会发现有的表达式用了两个问号(??)如下所示:alert(username??"Guest");这里的双引号称为空值合并运算符,它是ES2020的一个新特性,它的作用是当一个表达式是null或者undefined时为变量设置一个默认值。空值合并运算符在左侧的值是null或undefined时会返回问号右边的表达式。例如,如下代码会把firstName变量
-
javascript 冒泡排序算法
2023-12-26
67364 浏览
冒泡排序算法是一种通过比较两个相邻元素来对数组进行排序的算法,如果它们没有按预期的顺序排列,则交换它们。这里的顺序可以是任何顺序,比如递增顺序或递减顺序。冒泡排序原理我们手上有一个未排序的数组arr=[1,4,2,5,-2,3],任务是使用冒泡排序来对数组进行排序。冒泡排序从索引0开始对比元素,如果第0个元素比第1个元素大则二者交换,否则什么都不做。然后第1个索引对比第2个,第2个对比第3个,以此
-
javascript 解构赋值
2023-12-26
68162 浏览
javascript中最常用到的两种数据结构是Object和Array。对象允许我们创建一个按键存储数据项的实体。数组允许我们将数据项收集到有序列表中。不过,当我们将这些数据传递给一个函数时,可能不需要作为一个整体的对象/数组传递,可能需要单独的部分。解构赋值是一种特殊的语法,它允许我们将数组或对象“解包”成一堆变量,因为有时这样更方便。解构也特别适用于含有大量参数、默认值等的复杂函数。很快我们就
-
javascript 高级技巧 - 记忆化
2023-12-26
63233 浏览
计算机领域的记忆化(英语:memoization)是一种提高计算机程序执行速度的优化技术。通过存储大计算量函数的返回值,当这个结果再次被需要时将其从缓存中提取,而不再计算来节省计算时间。这是一种典型的用存储空间换取计算时间的方案。本文将首先介绍一个简单的用记忆化优化的例子,然后会介绍记忆化在javascript框架/库中的实际应用。阶乘在数学中,正整数的阶乘是所有小于及等于该数的正整数的积。例如5
-
详解 javascript 变量提升
2023-12-26
62862 浏览
变量提升是在面试中常见被问到的问题,今天就来说一下这个问题。一、概念使用var来声明变量的时候,会提到当前作用域的顶端,赋值语句在原地等待赋值。javascript在执行的时候会分为两部分:预编译阶段:js在变量声明提升的时候,会将var声明的变量以及用关键字函数声明的函数都会提升到当前作用域的顶端,赋值语句在原地等待赋值。这里要注意:如果变量名与函数相同的情况下,函数的优先级大于变量执行阶段:自