首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

50道JavaScript详解面试题,你需要了解一下

答案,是B,因为异步函数在JavaScript中返回Promises 。 8、等待关键字会阻止应用程序中的所有JavaScript代码执行,直到返回等待的Promises?...该对象位于原型的顶部,当浏览器查找访问属性的值时,它将遍历原型直到找到该值或直到不再遍历所有原型为止。 15、空值合并运算符做什么? 当左侧操作数为null或未定义时,它将返回右侧操作数。...17、在JavaScript中使用事件委托时 例如,当我们必须侦听页面加载期间可能不存在的事件时,可以使用事件委托,并在父元素上提供事件处理程序并查看event.target。...不可以,因为字符串在JavaScript中是不可变的,指向字符串的变量可以分配给另一个字符串。 21、承诺中的嵌套捕获可以捕获在承诺中向上抛出的错误吗?...但是,可以在JavaScript中通过在未将所有可能的参数都传递给函数时返回不同的输出来执行重载。 29、return语句在数组的forEach循环中做什么?

3.5K40

高性能前端架构解决方案

渲染页面至少需要加载 HTML 文件,但是大多数时候需要加载其他资源,例如 CSS 和 JavaScript 文件。一旦这些都加载完毕,浏览器就可以开始在屏幕上渲染。...Bundle split 还意味着可以缓存其中的一部分,即使其他部分已经更改,需要重新加载。...分离页面特定的代码不能自动完成,你需要识别可以单独加载的位。通常这是一个特定的路径或一组页面。使用动态导入来延迟加载代码。 Bundle split 会导致更多的请求被发送来加载你的应用程序。...打开初始页面后,你可以控制浏览器中发生的事情,因此你可以准备进行下一次交互。 预取资源 如果你预加载了下一页所需的代码,则可以消除用户启动导航时的延迟。...它允许仅加载必要的资源,并可以更好地利用缓存的内容,因为仅需要重新加载更改的文件。

2.9K10
您找到你想要的搜索结果了吗?
是的
没有找到

【前端性能优化】深入解析重绘和回流,构建高性能Web界面

绘制更新:直接在现有布局的基础上,使用新的样式信息重绘元素,而不必重新计算布局。这一步骤只影响元素的视觉外观,不改变页面结构。...内联关键CSS:对于首屏渲染,内联必要的CSS可以避免额外的HTTP请求,加速页面加载。 使用CSS预处理器(如Sass、Less)编写更简洁、模块化的代码,并自动处理浏览器兼容性问题。...其他策略 懒加载图像和资源:只在需要时加载图片和脚本,减轻首次加载负担。 代码拆分与按需加载:通过webpack等工具将代码分割成小块,用户只需加载当前页面所需的代码。...合理安排DOM操作,尽量减少对DOM树的改动,尤其是避免在循环中进行DOM操作。 利用CSS动画和转换,因为它们相比JavaScript动画更能有效利用硬件加速。...监控和限制JavaScript执行时间,避免长时间运行的脚本阻塞UI线程。 资源和代码优化,包括但不限于懒加载、代码拆分、资源压缩等,以减少页面加载时间和内存占用。

6610

前端性能优化(一)

将外部脚本置底(将脚本内容在页面信息内容加载后再加载)   前文有谈到,浏览器是可以并发请求的,这一特点使得其能够更快的加载资源,然而外脚本在加载时却会阻塞其他资源,例如在脚本加载完成之前,它后面的图片...、样式以及其他脚本都处于阻塞状态,直到脚本加载完成后才会开始加载。...; 像以上这种方式直接在页面上写 对页面的性能也是有影响的,即增加了页面首次加载的负担,推迟了 DOMLoaded和window.onload 事件的触发时机。...减少作用域查找(这方面设计到一些内容的相关问题)   前文谈到了作用域查找问题,这一点在循环中是尤其需要注意的问题。...如果在循环中需要访问非本作用域下的变量时请在遍历之前用局部变量缓存该变量,并在遍历结束后再重写那个变量,这一点对全局变量尤其重要,因为全局变量处于作用域的最顶端,访问时的查找次数是最多的。

1K20

Vue常用性能优化

v-for循环中的每项通常都是很好的候选项。...区分computed和watch使用场景 computed是计算属性,依赖其它属性值,并且computed的值有缓存,只有它依赖的属性值发生改变,下一次获取computed的值时才会重新计算computed...Vue是单页面应用,可能会有很多的路由引入,这样使用webpcak打包后的文件很大,当进入首页时,加载的资源过多,页面会出现白屏的情况,不利于用户体验。...更快的内容到达时间time-to-content,特别是对于缓慢的网络情况或运行缓慢的设备,无需等待所有的JavaScript都完成下载并执行,用户将会更快速地看到完整渲染的页面,通常可以产生更好的用户体验...,用于保留组件状态或避免重新渲染,和相似它,其自身不会渲染一个DOM元素,也不会出现在组件的父组件中。

1.5K10

从闭包和高阶函数初探JS设计模式

中讲到了原型、原型、this指向、call()、apply()、bind()以及JS中如何实现继承,前一篇是必备基础知识,这篇文章将从闭包和高阶函数中初探JavaScript模式。...在JavaScript中实现AOP,一般是将一个函数“动态织入”另一个函数内,那么就可以通过咱在前一篇基础文章《这些JS设计模式中的基础知识点你都会了吗?》中讲到的原型来实现。...类似于我们将某个耗时操作的函数结果保存到一个变量中,而不是在每次for循环中都去重新执行函数拿到计算结果。...内容,从Javascript中的this指向、原型、原型、JS继承实现到闭包(Closure)和高阶函数(HOF),这些都是学习设计模式的必要基础,因为在JavaScript中的设计模式很多地方都需要依赖于闭包和高阶函数来实现...AOP编程全解析 JS性能优化之惰性加载函数 JavaScript专题之函数柯里化 函数式编程指北 Understanding Higher-Order Functions in JavaScript

48630

JavaScript 框架生态系统的最新动态!

React Compiler:React Compiler 是一个可以自动进行组件 memoize 的编译器。可以通过减少不必要的重新渲染来提高性能。...可延迟视图(Deferrable views):可延迟视图使得可以推迟加载特定的组件、指令和管道。例如,您可以推迟加载一个依赖项,直到内容进入视口或直到主线程处于空闲状态。...NgOptimizedImage:NgOptimizedImage 是 Angular 的图片组件,自动采用最佳的图像加载方法。...部分水合(Partial hydration):通过部分水合,默认情况下,在页面呈现时浏览器不加载页面的任何 JavaScript。相反,随着用户与页面的交互,页面的特定部分会进行水合。...它使用静态加载壳来渲染页面,但为页面内的动态内容留下空白,这些内容将异步加载。因此,你可以在提供可缓存的静态页面的同时,将动态数据融入到页面内容中,从而获得多种性能优势。

7210

web前端性能优化

Javascript则相反,浏览器在加载javascript后立即执行,有可能会阻塞整个页面,造成页面显示缓慢,因此javascript最好放在页面最下面。...但如果页面解析时就需要用到javascript,这时放到底部就不合适了。 Lazy Load Javascript(只有在需要加载的时候加载,在一般情况下并不加载信息内容。)...; 像以上这种方式直接在页面上写 对页面的性能也是有影响的,即增加了页面首次加载的负担,推迟了 DOMLoaded和window.onload 事件的触发时机。...此外,使用 eval和 Function也不利于Javascript 压缩工具执行压缩。 (4). 减少作用域查找 前文谈到了作用域查找问题,这一点在循环中是尤其需要注意的问题。...如果在循环中需要访问非本作用域下的变量时请在遍历之前用局部变量缓存该变量,并在遍历结束后再重写那个变量,这一点对全局变量尤其重要,因为全局变量处于作用域的最顶端,访问时的查找次数是最多的。

1.3K20

Netlify提供的静态网站渲染和缓存技术

使用 CSR 的页面上可能需要处理数百兆字节的 JavaScript,因此您的网站可能加载和显示数据很慢。...如果您使用 CSR 来呈现整个网站,则搜索引擎只能阅读您的占位符内容,而不是最终由 JavaScript 加载的丰富内容。...SSG是最适合不经常更改的内容站点和页面的呈现方法。博客、作品集、文档站点和信息内容都是SSG的绝佳用例。要更新内容,请触发站点的重新构建,新预生成的资产将在构建过程完成后准备好从CDN提供服务。...这允许重新生成已修改的单个静态呈现页面,而不是从头开始重新构建整个站点。使用SWR,您可以发布对特定页面更改,例如通过CMS的webhook触发,而无需触发完整的站点重建,从而实现更快的站点更新。...该页面的以前(过时)版本将被提供,直到在后台重新验证和重新生成该页面,下一个请求该页面的请求将接收更新的版本。

35230

如何制作自己的原生 JavaScript 路由

侦听 “popstate ”事件以响应.pathname 的更改。每当在浏览器的地址栏中输入新的 URL,但我们不想刷新页面时,就会发生这种情况,我们只是想通过加载新内容来刷新视图。...这就是使浏览器无需重新加载页面即可更改 URL 的原因。 结果:现在,每次我们单击按钮时,URL 实际上都会在浏览器的地址栏中更改。内容框也会更新。 ? 我们的原生 JS 路由开始运行了。...但是由于该事件带有单击的 id,因此单击 Back 或 Forward 时很容易刷新视图并重新加载内容。...当你第一次在 PWA 中加载此路由时,必须确保如果直接在地址栏中输入/page/home时,它可以工作。 到目前为止,我们仅从前端更改了路由器地址。...你如何选择重新加载 #content 元素中的内容完全取决于你自己和你的后端设计。

3.8K20

浏览器之性能指标-INP

它们分别衡量页面加载速度、交互性和视觉稳定性。 到2024年3月,首次输入延迟(FID)将被与下一次绘制的交互(INP)取代,成为交互性的Core Web Vitals。...这包括输入延迟、处理时间以及在下一次绘制之前的呈现延迟,直到新帧被呈现出来。 上图展示了一个交互流程的生命周期。输入延迟发生在事件处理程序开始运行之前,可能是由于主线程上的长任务等因素引起的。...「处理时间」(Processing Time):运行JavaScript事件处理程序。 「呈现延迟」(Presentation Dealy):重新计算页面布局并绘制页面内容。...使用 content-visibility 属性,我们可以将元素的呈现方式设置为 auto,这样当元素不在视口内时,其内容就会被自动加载,只有当元素进入视口时,才会进行渲染。...content-visibility: auto; 表示启用自动的内容懒加载

76121

vue2基础性能优化

# computed 和 watch computed: 是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed...  对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。...这样对于页面加载性能上会有很大的提升,也提高了用户体验。...from 'vue-lazyload' 3、在 vue 中使用 Vue.use(VueLazyload) 4、在 vue 文件中将 img 标签的 src 属性直接改为 v-lazy ,从而将图片显示方式更改为懒加载显示...,通过滑动多次请求数据,再把数据通过concat来拼接在数组里来优化性能; 或者通过后端协助直接进行传参分页数据。

69930

【前端面试题】03—200+道常见JavaScript基础面试题上(附答案)

(1) defer属性规定是否延迟执行脚本,直到页面加载为止, async属性规定脚本一旦可用,就异步执行。...(2) defer并行加载 JavaScript文件,会按照页面上 script标签的顺序执行, async并行加载 JavaScript文件,下载完成立即执行,不会按照页面上 script标签的顺序执行...(2)由this变量引用该对象 (3)该对象继承该函数的原型(更改原型的指向) (4)把属性和方法加入到this引用的对象中。...默认情况下,在页面加载期间,HTML代码的解析将暂停,直到脚本停止执行。 这意味着,如果服务器速度较慢或者脚本特别“沉重”,则会导致网页延迟。...for (var iable name in object){} 在每次循环中,来自对象的一个属性与变量名相关联,循环继续,直到对象的所有属性都被遍历。

4.4K10

腾讯牛逼,连环追问我基础细节!

当浏览器加载一个网页时,它会解析HTML、CSS和JavaScript代码,并生成DOM(文档对象模型)树。...当JavaScript的执行栈为空时,事件循环会从任务队列中取出一个任务并执行。这个过程会不断重复,形成一个循环,直到所有任务都执行完毕。...渲染进程:每个标签页对应一个渲染进程,负责页面的渲染和JavaScript的执行。渲染进程之间是相互隔离的,以防止一个页面的崩溃影响其他页面。...15.聊小程序WebView预加载、热更新机制 小程序预加载有三种方式实现: 提前请求:在用户可能导航到目标页面之前,提前发送网络请求获取页面资源。...资源缓存:将预加载的资源缓存到本地,当用户实际访问该页面时,直接从缓存中读取资源,减少网络请求时间。 预测式加载:根据用户的历史行为和习惯,预测用户下一步可能访问的页面,并提前加载相关资源。

16910

auto-comet服务器端向客户端的自动发送

客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。   ...当客户端处理接收的数据、重新建立连接时,服务器端可能有新的数据到达;这些信息会被服务器端保存直到客户端重新建立连接,客户端会一次把当前服务器端所有的信息取回。    ? 图 2....基于流方式的服务器推模型   上节提到的 AJAX 方案是在 JavaScript 里处理 XMLHttpRequest 从服务器取回的数据,然后 Javascript 可以很方便的去控制 HTML 页面的显示...同样的思路用在 iframe 方案的客户端,iframe 服务器端并不返回直接显示在页面的数据,而是返回对客户端 Javascript 函数的调用,如“<script type="text/<em>javascript</em>...将相应的插件封装成 JAR 包并放在类路径下,Struts2 运行时便能<em>自动</em><em>加载</em>这些插件。

3.1K60

我工作中用到的性能优化全面指南

无论是页面加载速度,用户体验,或者是程序运行效率,都与Web的性能优化息息相关。...最小化和压缩代码 在构建过程中,为了减少文件的大小和加载时间,通常会对JavaScript代码进行最小化和压缩处理。这包括移除不必要的空格、换行、注释,以及缩短变量和函数名。...hasOwnProperty hasOwnProperty方法会查询对象的整个原型,这可能会影响性能。...这可以加快首次页面加载速度,因为用户可以直接看到渲染好的页面,而不必等待JavaScript下载并执行。这对于性能要求很高的应用来说,是一种有效的优化手段。...并且,结合Background Sync,我们可以在用户离线时提交表单或同步数据,并在用户重新联网时自动重试。

25440

ViewPager与Fragment那些事儿

当无缓存时,才会去重新new一个。否则只是对Fragment中必要的参数重新设置即可。 ? 二:问题 需求开发阶段,自测时经常发生页面错乱的问题,类似这样: ? 这可是严重问题,必须解决!...2.Fragment自动加载问题: 在查看DatasetChange的代码时,发现一个很有意思的方法和常量 ?...通过查看注释和调试,发现他是用来控制展示一个fragment之后,自动加载两边fragment的数量,默认和最小值都为1。 问题来了,为什么不能为0?...又因为我们考虑的是懒加载,只考虑只加载自己当前展示页面的fragment,故第三行ii赋值必然取不到数据,为null。...最后会走进26行的分支里面,调用addNewItem方法,生成的位置正好就是第一次循环时pos的值,即当前页面左边的页面fragment。 直到下一次循环,才会走进前两个分支。

84980

Vue.js-深入响应式原理

利用vue,在开发过程中我们只需要关注data就好了,渲染更新页面的功能,全部由vue内部帮我们做了,那么到底是怎么做到的呢?...追踪变化 当把一个javascript对象传入vue实例作为data选项时,vue将遍历该对象的所有属性,并使用Object.defineProperty把这些属性全部转换成getter/setter。...每个组件实例都对应一个watcher实例,它会在组件渲染过程中把’接触‘过的数据属性记录为依赖,当依赖项的setter触发时,会通知watcher,从而重新渲染与之关联的组件。 ?...异步更新队列 vue对Dom的更新是异步的,只要侦听到数据变化,就创建一个队列,并缓冲在同一事件循环中的所有数据变化。若同一个watcher被多次触发,只会被推入队列一次。...然后在下一次时间循环"tick"中,vue刷新队列并执行实际工作。

1.5K30
领券