JS面试题|[2024-12-28]

1.JS的设计原理是什么?

JS引擎 运行上下文 调用栈 事件循环 回调

执行流程:

        JS引擎将代码解析为电脑可以执行的代码,调用一些API(运行上下文)让浏览器执行

        JS是单线程的,每次从调用栈里面取出来的代码进行调用,如果执行非常耗时就会阻塞线程,导致浏览器卡顿,回调函数通过加入事件队列里,等待事件循环后,放入调用栈执行

        事件循环监听到调用栈为空时,才会从事件队列里拿出任务,放入调用栈继续执行

 2.JS中关于this指向的问题

1.全局对象中的this指向的问题

        指向的是window

2.全局作用域或普通函数中的this

        指向全局window

3.this永远指向最后调用它的那个对象

        在不是箭头函数的情况下

4.new 关键字修改了this的指向

5.apply、call、bind

        可以改变this指向,不是箭头函数

6.箭头函数中的this

        它的指向在定义的时候就已经确定了

        箭头函数ta没有this,看外层是否有函数,有就是外层函数的this,没有就是window

7.匿名函数中的this

        永远指向了window,匿名函数的执行环境具有全局性,因此this指向window

3.script标签里的async和defer有什么区别

当没有async和defer这两个属性的时候:

        浏览器会立即加载并执行指定的脚本

有async:

        加载和渲染后面元素的过程将和script的加载和执行并行进行(异步)

有defer:

        加载和渲染后面元素的过程将和script的加载并行进行(异步),但是它的执行事件要等到所有元素解析完成之后才会执行

4.setTimeout最小执行时间是多少

HTML5规定的内容:

        setTimeout最小执行时间是4ms

        setInterval最小执行时间是10ms

执行时间小于规定,按照规定计算

不同浏览器规定可能会不同

5.ES6和ES5有什么区别

JS的组成:ECMAScript、BOM、DOM

ES5:ECMAScript5,2009年ECMAScript的第五次修订,ECMAScript2009

ES6:ECMAScript6,2025年ECMAScript的第六次修订,ECMAScript2015,是JS的下一个版本标准

6.ES6的新特性有哪些

1.新增块级作用域(let、const)

        不存在变量提升

        存在暂时性死区的问题

        块级作用域的内容

        不能在同一个作用域内重复声明

2.新增了定义类的语法糖(class)

3.新增了一种基本数据类型(symbol)

        定义独一无二的值,不能用new关键字

4.新增了解构赋值

        从数组或者对象中取值,然后给变量赋值

5.新增了函数参数的默认值

6.给数组新增了API

7.对象和数组新增了扩展运算符

8.Promise

        解决一些异步的计算,解决回调地狱的问题。

        自身有call、reject、resolve、race方法

        原型上有then、catch

        把异步操作队列化

        三种状态:pending(初始状态),fulfilled(操作成功),rejected(操作失败)

        状态转变:pending -> fulfilled;pending ->rejected 一旦发生,状态就会凝固,不会再变

        async await:

                同步代码做异步的操作,两者必须搭配使用

                async表明函数内有异步操作,调用函数会返回Promise

                await是组成async的表达式,结果是取决于它等待的内容,如果是promise那就

                是promise的结果,如果是普通函数就进行链式调用

                await后的promise如果是reject状态,那么整个async函数就会中断,后面的代码

                不执行

9.新增了模块化(import、export)

10.新增了set和map数据结构

        set是不重复

        map的key的类型不受限制

11.新增了generator

12.新增了箭头函数

        不能作为构造函数使用,不能用new,箭头函数就没有原型

        箭头函数没有arguments

        箭头函数不能用call、apply、bind去改变this的执行

        this指向最外层第一个函数的this

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全面了解 SQL Server:功能、优势与最佳实践

SQL Server 是微软公司推出的一款关系型数据库管理系统(RDBMS),广泛应用于企业级数据存储、数据分析、应用开发等领域。作为全球最受欢迎的数据库管理系统之一,SQL Server 提供了强大的功能和工具,支持从小型应用到大型…

jdk动态代理和cglib动态代理对比

jdk动态代理和cglib动态代理对比: CGLIB 和 JDK 动态代理都可以用来在运行时生成代理对象 1. 基本概念 JDK 动态代理:只代理接口(interface),无法代理类。它使用 java.lang.reflect.Proxy 类和 java.lang.reflect.I…

给vscode的新项目选择虚拟环境

按照通常的步骤新建了.vscode文件并生成了launch.json,都是通过左栏的调试按钮里的create a json file,但是 运行时还是没有识别,之后看到下面的这个链接里,图中是在>之后选择的环境,于是: ctrlG出现搜索…

攻破 Kioptix Level 1 靶机

找教程然后自己练习,论菜狗的自我修养 基本步骤 1.确定目标IP 2.扫描端口,服务,版本信息,漏洞信息 3.查找漏洞可利用脚本 4.运行脚步 一、信息获取 arp-scan -l nmap -sS -p- -sV -sC -A --min-rate5000 192.168.5.130 二、查…

b站ip属地评论和主页不一样怎么回事

在浏览B站时,细心的用户可能会发现一个有趣的现象:某些用户的评论IP属地与主页显示的IP属地并不一致。这种差异引发了用户的好奇和猜测,究竟是什么原因导致了这种情况的发生呢?本文将对此进行深入解析,帮助大家揭开这一…

如何使用fetch函数获取多个数据并同时使用(在嵌套的fetch函数之间传递数据)

(一)问题描述 需要读取多个数据,也就是有多个fetch函数,但是这些数据又需要同时用。由于fetch是异步的,因此每个fetch单独进行是没有办法同时获得数据的,此时有两种可行的方式。 (二&#xff…

音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件

通过FFmpeg命令可以将mp4文件转换为ps文件。由于ps文件对应的FFInputFormat结构为: const FFInputFormat ff_mpegps_demuxer {.p.name "mpeg",.p.long_name NULL_IF_CONFIG_SMALL("MPEG-PS (MPEG-2 Program Stream)"),.p.flags …

帝国cms电脑pc站url跳转到手机站url的方法

本文讲解一下帝国cms电脑网站跳转到手机动态网站和手机静态网站的方法,笔者以古诗词网 www.gushichi.com为例,为大家介绍操作步骤。方法一:帝国pc站跳转到手机静态站 1、假设我们有帝国cms 电脑网站www.XXX.com,手机网站m.XXX.com &#xf…

【数据结构与算法】单向链表

一、什么是链表 链表由一系列节点组成,每个节点都包含一个 data 域(存放数据)和一个 next 域(指向下一节点)。链表中的节点可以按照任意顺序存放在内存中,它们之间并不连续。每个节点都记录了下一个节点的地…

【AI大模型系列】常用的提示词框架(二)

目录 一、ICIO框架 1.1 ICIO框架组成 1.2 ICIO框架案例 二、CRISPE框架 2.1 CRISPE框架组成 2.2 CRISPE框架案例 三、BROKE框架 3.1 BROKE框架组成 3.2 BROKE框架案例 四、RASCEF框架 4.1 RASCEF框架组成 4.2 RASCEF框架案例 一、ICIO框架 1.1 ICIO框架组成 Instru…

【Golang 面试题】每日 3 题(八)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

struct udp_sock

这个struct udp_sock结构体是Linux内核网络栈中用于表示一个UDP套接字的数据结构。它继承自struct inet_sock,这意味着它包含了所有IPv4或IPv6套接字共享的基础信息和函数指针。下面是对struct udp_sock中一些关键成员的解释: struct inet_sock inet;:这是udp_sock结构体的第…

【计组】例题课后题

第一章 计算机如何区分指令和数据? 一般来讲,在取指周期中从内存读出的信息是指令流,它流向控制器;而执行周期中从内存读出的信息流是数据流,它由内存流向运算器。 从存放位置看,从代码段取出的是指令流,从数据…

C#数学相关开发性能优化方法

本文Github地址:CSharp-MathOptimization.md 华为公司的C语言编程规范在开头就强调了: 一般情况下,代码的可阅读性高于性能,只有确定性能是瓶颈时,才应该主动优化。 本文讲述的方法没有经过大项目和大公司的检验&…

一网多平面

“一网多平面”是一种网络架构概念,具体指的是在一张物理网络之上,逻辑划分出“1N”个平面。以下是对“一网多平面”的详细解释: 定义与构成 01一网多平面 指的是在统一的物理网络基础设施上,通过逻辑划分形成多个独立的网络平面…

跨语言数据格式标准化在 HarmonyOS 开发中的实践

文章目录 前言数据格式标准化的意义数据传递中的痛点标准化的优势 JSON 与 Protocol Buffers 的比较JSONProtocol Buffers HarmonyOS 跨语言数据传递示例示例代码:定义 Protocol Buffers 消息格式生成 Java 和 C 代码示例代码:Java 端序列化与传递数据C …

【Python】基于界面库PyQt5+Qt Dsigner的环境配置和界面绘制

目录 一 安装PyQt5以及PyQt5-tools 二 配置外部开发工具 三 使用Qt Designer设计界面 四 使用PyUIC将ui文件转换为py文件 五 CU分离实现逻辑代码 一 安装PyQt5以及PyQt5-tools 之前做的一些Python脚本、软件都是基于 Tkinter 实现的,其中界面的设计布局是很头疼…

Java读取InfluxDB数据库的方法

本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、tag等。 首先,创建一个Java项目,用于撰写代码。如果大家是基于IDEA来创建项目,则可…

嵌入式驱动开发详解7(并发、竞争、中断)

文章目录 前言并发和竞争原子操作自旋锁信号量互斥体 中断中断简介中断API上半部和下半部设备树分析中断号获取源码 后续参考文献 前言 中断会引起线程的切换,并发和竞争也是对线程切换的一种灵活保护和处理,因此这里将中断和并发与竞争放在一块讲解说明…

渗透测试常用术语总结

一、攻击篇 1.攻击工具 肉鸡 所谓“肉鸡”是一种很形象的比喻,比喻那些可以被攻击者控制的电脑、手机、服务器或者其他摄像头、路由器等智能设备,用于发动网络攻击。 例如在2016年美国东海岸断网事件中,黑客组织控制了大…