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

前端测试题:(解析)关于JS中this关键字的说法,下面错误的是?

this 的工作原理 JavaScript 有一套完全不同于其它语言的对 this 的处理机制。在五种不同的情况下 ,this 指向的各不相同。...1.全局范围: this; 浏览器中运行的 JavaScript 脚本,这个全局对象是 window。 2.全局函数调用: foo(); 这里 this 也会指向全局对象。...从以上可以看出: this 指向的并不是函数foo, 而是 c 调用的函数作为一个对象的属性出现时,this 指向的是“.”或“[”关键符号 前的那个对象 4.显式的设置 this function...因此函数调用的规则在上例中已经不适用了,在foo 函数内 this 被设置成了 bar。...new创建的对象,因为未定义this.a,所以undefined 答案:错误的是 C.

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前端面试题之性能优化大杂烩

    其中layout(布局)和paint(绘制)是最大的。js开销缩短解析时间开销:加载-》解析和编译-》执行js的解析和编译,执行要花很长时间(谷歌开发工具中的performance中可以查看。...js代码成抽象语法树-》字节码-》机器码 编译过程会进行优化 运行时可能会发生反优化v8内部优化脚本流:边下载边解析字节码缓存:常用的字节码会存起来(这个文件用到其他的文件也用到的参数)函数懒解析:...局部变量: 函数执行完没有闭包引用会被标记回收全局变量: 直到浏览器被卸载页面释放回收机制:引用计数:每调用一次加一,当计数为0的时候进行回收。...缺点是不能解决循环引用(例如a对象依赖于b对象,标记清除(垃圾回收): 从根节点去访问,当访问到不能被访问的对象就进行标记然后进行垃圾回收。...(当a对象解决:避免意外的全局变量;避免反复运行引发的闭包;避免脱离的dom元素没有被回收(所以react有ref这个api)。

    85530

    你应该知道的7 个 JavaScript 原生错误类型

    从浏览器控制台到运行 Node.js 的终端,我们到处都会看到错误。 本文的重点是概述我们在 JS 开发过程中可能遇到的错误类型。 ---- 1....当我们输入 JS 引擎不能理解的代码时,就会发生这个错误。 JS 引擎在解析期间捕获了这个错误。在 JS 引擎中,我们的代码经历了不同的阶段,然后才能在终端上看到结果。...标记化 解析 解释 标记化将代码的源分解为各个单元。在此阶段,将对数字、关键字、文字、运算符进行分类并分别标记。 接下来,生成的标记流将会传递到解析阶段,由解析器处理。...这是从标记流生成 AST 的地方。AST 是代码结构的抽象表示。 在标记化和解析这两个阶段,如果我们代码的语法不符合 JS 的语法规则,则会使该阶段失败并引发 SyntaxError。...它说 “h” 是意外的,它破坏了cat 变量的声明。 因此,可以说语法错误在解析或编译期间发生。 4.

    2.7K20

    Node.js 20.13 LTS 发布:base64 性能提升、watch 标记为稳定、内存泄漏回归测试方法...

    events, doc: 标记 CustomEvent 为稳定 从本次发布开始,CustomEvent 被标记为稳定。...fs: 在 fs/promises 中添加堆栈跟踪 fs 的同步函数在抛出错误时包含堆栈跟踪信息,这有助于调试。但 fs/promises 中的函数抛出错误时没有堆栈跟踪信息。...为了避免意外结果,用户应避免在自己无法控制实现的构造函数或可能被应用程序中的其他方调用的构造函数上使用此 API。 为了避免意外泄漏,此 API 不返回找到对象的原始引用。...此 API 提供的可见性类似于堆快照,同时用户可以节省序列化和解析的成本,并在搜索期间直接过滤目标对象。 我们在测试套件中内部使用此 API,比任何其他 CI 中的泄漏回归测试策略更稳定。...当处于 Watch 模式时,被监视文件的更改会导致 Node.js 进程重启。

    17710

    Js中常见的内存泄漏场景

    在Js七种基本类型中的引用类型Object的变量其占据内存空间大且大小不固定,在堆内存中实际存储对象,在栈内存中存储对象的指针,对于对象的访问是按引用访问的。...,从而决定是否需要进行内存回收,在Js中主要有引用计数与标记清除两种垃圾回收算法。...所有现代浏览器都使用了标记清除垃圾回收算法,所有对JavaScript垃圾回收算法的改进都是基于标记清除算法的改进。 垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记。...然后,它会去掉运行环境中的变量以及被环境中变量所引用的变量的标记。 此后,依然有标记的变量就被视为准备删除的变量,原因是在运行环境中已经无法访问到这些变量了。...常见内存泄漏场景 意外的全局变量 在JavaScript中并未严格定义对未声明变量的处理方式,即使在局部函数作用域中依旧能够定义全局变量,这种意外的全局变量可能会存储大量数据,且由于其是能够通过全局对象例如

    2.5K20

    JavaScript 内存泄露的4种方式及如何避免

    在 JavaScript 中,不需要的引用是保留在代码中的变量,它不再需要,却指向一块本该被释放的内存。有些人认为这是开发者的错误。...在浏览器中,全局对象是 window 。 ? 真相是: ? 函数 foo 内部忘记使用 var ,意外创建了一个全局变量。此例泄露了一个简单的字符串,无伤大雅,但是有更糟的情况。...另一种意外的全局变量可能由 this 创建: ? 在 JavaScript 文件头部加上 'use strict',可以避免此类错误发生。...启用严格模式解析 JavaScript ,避免意外的全局变量。 全局变量注意事项 尽管我们讨论了一些意外的全局变量,但是仍有一些明确的全局变量产生的垃圾。...尤其当全局变量用于临时存储和处理大量信息时,需要多加小心。如果必须使用全局变量存储大量数据时,确保用完以后把它设置为 null 或者重新定义。与全局变量相关的增加内存消耗的一个主因是缓存。

    4.8K52

    第二章 你第首个Electron应用 | Electron in Action(中译)

    /app/main.js 我们使用file://protocol和_dirname变量,该变量在Node中全局可用。_dirname是Node进程正在执行的目录的完整路径。...在我们一起学习的过程中,我们将需要处理添加到标记中的一些元素,所以让我们首先查询这些选择器并将它们缓存到变量中。将以下内容添加到app/renderer.js。...|获取新链接输入框中的URL字段, }); +我们很块就会用到这个值。 ​ Fetch API作为全局可用的fetch变量。...我们的下一步将是获取接收到的大块标记,并解析它来遍历它并找到title元素。 解析回复报文 Chromium提供了一个解析器,它将为我们做这件事,但是我们需要实例化它。...我们使用另一个匿名函数传递带有错误消息的URL。这主要是为了提供更好的错误消息。如果不希望在错误消息中包含URL,则没有必要这样做。 图2.32 在获取、解析和呈现链接时捕获错误: .

    4.7K30

    前端开发中不可忽视的知识点汇总(二)

    它的功能是把对应的字符串解析成JS代码并运行;应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。...默认支持的糟糕特性都会被禁用,比如不能用with,也不能在意外的情况下给全局变量赋值; 全局变量的显示声明,函数必须声明在顶层,不允许在非函数代码块内声明函数,arguments.callee也不允许使用...1.async标记的Script异步执行下载,并执行。这意味着script下载时并不阻塞HTML的解析,并且下载结束script马上执行。2.defer标签的script顺序执行。...减少代码间的耦合 让代码保持弹性 严格按规范编写代码 设计可扩展的API 代替旧有的框架、语言(如VB) 增强用户体验 通常来说对于速度的优化也包含在重构中 压缩JS、CSS、image等前端资源(通常是由服务器来解决...、JS执行、JS API绑定等等; 详细版: 1、浏览器会开启一个线程来处理这个请求,对 URL 分析判断如果是 http 协议就按照 Web 方式来处理; 2、调用浏览器内核中的对应方法,比如 WebView

    1.7K40

    JavaScript是如何工作的:事件循环和异步编程的崛起+ 5种使用 asyncawait 更好地编码方式!

    那么,是谁告诉JS引擎执行程序的代码块呢?实际上,JS引擎并不是单独运行的——它是在一个宿主环境中运行的,对于大多数开发人员来说,宿主环境就是典型的web浏览器或Node.js。...所有环境中的共同点是一个称为事件循环的内置机制,它处理程序的多个块在一段时间内通过调用调用JS引擎的执行。 这意味着JS引擎只是任意JS代码的按需执行环境,是宿主环境处理事件运行及结果。...某些异步操作可能发生在事件循环的一个标记期间,不会导致一个全新的事件被添加到事件循环队列中,而是将一个项目(即任务)添加到当前标记的任务队列的末尾。...注意:因为Promise 一旦被解析,它在外部是不可变的,所以现在可以安全地将该值传递给任何一方,因为它不能被意外地或恶意地修改,这一点在多方遵守承诺的决议时尤其正确。...var response = await rp(‘https://api.example.com/endpoint1'); 2、错误处理: Async/wait 可以使用相同的代码结构(众所周知的try

    3.1K20

    他们渲染了一百万个网页,来了解网络如何崩溃

    作者团队深入研究产生了以下文章,描述了对每个错误的发现: How to resolve ReferenceError:我们可以获取公共库的高频全局变量的使用趋势,在此基础上,构建相关联的变量名和特定的库来解决引用错误...What causes SyntaxError on live web sites:开发过程中,多数的语法错误来自于拼写错误。实际运行中,多数的语法错误来自网络故障或者 JS 的编写错误。...如何预测错误数量? 作者团队最初用逻辑回归和分类的方法(logistic regression classifier),尝试根据 JS 所调用的库来预测网站中错误的存在。...的确,在运行时才确定类型可以使得加载各类库更轻松自然,但它也造成了一些错误发生的可能:即可能出现缺少库或者 API 发生了改变的情况。...经过了十年的沉淀,有了更好的想法来标准化这些无效标记,并将它们合到了 HTML5 中。从目前的结果看,HTML5 胜过了 XHTML,JavaScript 胜过了 Java applet。

    1.3K20

    代码审计:如何在全新编程语言中发现漏洞?

    mongdb部分 js部分 这里是无法拼接跳出的,字符串就是字符串,然而,借助js与php类似的可以传入数组参数的特性,构造/login?...要知道,开发者已经殚精竭虑的做了安全限制,却仍然被突破。错误的渲染方式可能导致数据与代码没有严格分离,造成漏洞。...案例一 人性化矫正输入 有时我们会善意的为输入者可能的错误输入形式进行矫正,这可能为攻击者提供便利。...后续服务中提供的下载功能具有缺陷,组合拳导致session也沦陷。 四,意外的可控变量 这门全新变成语言肯定需要与用户交互,从而控制一些变量。...我们通常会对其进行安全检查,所以,出现意外的可控变量(我们认为不可控但实际上用户可控)就很容易导致安全问题。

    72510

    你必须掌握的 7 种 JavaScript 错误类型

    从浏览器控制台到运行Node.js的计算机终端,我们到处都会看到错误。 这篇文章重点介绍了在JS开发过程中可能遇到的 7 种错误类型。...1 3.SyntaxError 语法错误 这是我们遇到的最常见的错误。 当我们键入JS引擎可以理解的代码时,会发生此错误。 解析期间,JS引擎捕获了此错误。...在JS引擎中,我们的代码经过不同的阶段,然后才能在终端上看到这些结果。 tokenization 标记化 parsing 解析 interpreting 编译 标记化将代码的源分解为各个单元。...在此阶段,将对数字,关键字,文字,运算符进行整理并分别进行标记。 接下来,生成的令牌流将传递到解析阶段,由解析器处理。 这是从令牌流生成AST的地方。 AST是我们代码结构的抽象表示。...在这两个阶段,即标记化和解析,如果我们代码的语法/源不符合JS的语法规则,则会使阶段失败并引发SyntaxError。

    4.1K10

    Go1.20.3 发布

    从 ES6 开始,反引号用于 JS 模板文字。如果模板在 Javascript 模板文字中包含 Go 模板操作,则操作的内容可用于终止文字,将任意 Javascript 代码注入 Go 模板。...这源于几个原因:mime/multipart.Reader.ReadForm 限制了解析的多部分表单可以消耗的总内存。ReadForm 可能低估了消耗的内存量,导致它接受比预期更大的输入。...ReadForm 现在可以更好地估计已解析表单的内存消耗,并执行更少的短期分配。...此外,使用 ReadForm 解析的表单在所有部分中可能包含不超过 10,000 个标题字段。可以使用环境变量 GODEBUG=multipartmaxheaders= 调整此限制。...从这些问题看出,很多程序可能都有使用到相关的 API,因此建议大家升级。

    1.2K30

    Node.js生态系统的隐藏属性滥用攻击

    • 完整性:攻击者可能会破坏模块中关键属性的一致性或可信度。• 可用性:攻击者可能会违反应用程序对属性的期望,由于意外错误情况导致拒绝服务攻击。...如果 LYNX 发现标签传播到内部对象,它会将宿主对象标记为属性载体。为此,通过拦截所有变量读/写操作来检测目标 Node.js 程序。...如果目标 Node.js 代码在 Node.js 模块中,LYNX 需要将其嵌入到一个简单的 Node.js 测试应用程序中。 然后,LYNX 调用目标 Node.js 模块的公开 API。...在 Node.js 生态系统中,许多请求解析模块也支持将 URL 查询字符串传递给对象。例如,一个名为 qs 的请求解析模块(在 npm 上每月下载 1 亿次)将查询字符串转换为单个对象(例如,从 ?...在执行期间,由于蓝色虚线指示的符号值传播,另外两个变量也被符号化。通过解析三个符号值的约束,LYNX 找到了两个可能的路径(即第 19 行和第 21 行)。

    21020

    7种你应该知道的JavaScript常见的错误

    从浏览器的控制台到运行Node.js的计算机终端,我们到处都会看到各类错误。 这篇文章的重点是概述我们在JS开发过程中可能遇到的错误类型。 1....,它都会存储程序中定义的变量。...当我们键入JS引擎难以理解的代码时,会出现此错误。解析期间,JS引擎捕获了此错误。 在JS引擎中,我们的代码经历了不同的阶段,然后才能在终端上看到运行结果。...标记化 解析 执行 标记化将源代码分解为各个单元。在这个阶段,将对数字,关键字,文字,运算符进行分类并分别进行标记。接下来,生成的token流将传递到解析阶段,由解析器处理。...这是从token生成AST的地方。AST是我们代码结构的抽象数据结构。 在标记化和解析这两个阶段,如果我们代码的语法不符合JS的语法规则,则会使执行阶段失败并引发SyntaxError。

    2.6K10

    vue 性能监控分析

    我们在浏览网站的时候,不可避免的需要消耗自身计算机资源,比如带宽、cpu、存储等等,这些资源会随着访问时间的延长而产生一定的数据碎片,在我们没有关闭浏览器的时候,这些碎片会一直存在的,那么作为开发者我们开发的网站是否优质...html的解析又会被js打断,解析过程中遇到阻塞,因而在现在浏览器中,为了减缓渲染被阻塞的情况,现代的浏览器都使用了猜测预加载。...当解析被阻塞的时候,浏览器会有一个轻量级的HTML或CSS扫描器scanner继续在文档中扫描,查找那些将来可能能够用到的资源文件的url,在渲染器使用它们之前将其下载下来,并且下载是可以并行进行的,并行的上限一般为...Performance API 具体参考js标准教程Performance API 主要用到的是performance.timing对象,具体解释见上面的链接,下面这张图对应各个指标的时间点。...: 1649942786450 // DOM 解析完成后,网页内资源加载完成的时间(如 JS 脚本加载执行完毕) domInteractive: 1649942786450 // 注意只是 DOM 树解析完成

    2K90
    领券