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…

攻破 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属地并不一致。这种差异引发了用户的好奇和猜测,究竟是什么原因导致了这种情况的发生呢?本文将对此进行深入解析,帮助大家揭开这一…

音视频入门基础: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 …

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

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

【计组】例题课后题

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

一网多平面

“一网多平面”是一种网络架构概念,具体指的是在一张物理网络之上,逻辑划分出“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上半部和下半部设备树分析中断号获取源码 后续参考文献 前言 中断会引起线程的切换,并发和竞争也是对线程切换的一种灵活保护和处理,因此这里将中断和并发与竞争放在一块讲解说明…

11.MySQL视图特性

目录 视图基本使用视图规则和限制 视图 视图是一个虚拟表, 其内容有查询定义. 同真实的表一样, 视图包含一系列带有名称的列和行数据. 视图的数据变化会影响到基表, 基表的数据变化也会影响到视图, 这个视图和刚刚讲的ReadView之间没有任何关系. 基本使用 创建视图: create vi…

【RabbitMQ高级篇】消息可靠性问题(1)

目录 1.消息可靠性 1.1.生产者消息确认 1.1.1.修改配置 1.1.2.定义Return回调 1.1.3.定义ConfirmCallback 1.2.消息持久化 1.2.1.交换机持久化 1.2.2.队列持久化 1.2.3.消息持久化 1.3.消费者消息确认 1.3.1.演示none模式 1.3.2.演示auto模式 1.4.消费失败重试机制…

ASO优化之增加应用程序评论行之有效的成功战略

应用评论不仅对于用户信任至关重要,而且对于提高应用可见度、转化率以及整体应用商店优化(ASO)也至关重要。评论和评分会影响App Store和Google Play平台上算法的排名,这些平台优先考虑具有更高参与度和满意度指标的应用程序。下面,我们将概述…

字符串存储、分割相关总结(strncpy 函数和strtok() 函数相关)

1.想用这些函数都需要导入头文件 #include<string.h> 2.怎么创建字符串并输入 #define maxsize 100 char a[maxsize1];//创建字符串&#xff0c;预留一个位置放\0 【1】scanf("%s",a);//使用 scanf 函数读取不带空格的字符串 【2】fgets(a, sizeof(a), stdi…

【Rust自学】7.4. use关键字 Pt.2 :重导入与换国内镜像源教程

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 7.4.1. 使用pub use重新导入名称 使用use将路径导入作用域内后。该名称在词作用域内是私有的。 以上一篇文章的代码为例&#xff1a; m…

快速排序学习优化

首先&#xff0c;上图。 ‘’’ cpp int partSort(int *a ,int left,int right) {int keyi left; //做左侧基准while(left<right){while(left<right && a[right]>a[keyi]){right--;}while(left<right && a[left]<a[keyi]){left;}swap(a[left…

宏集eX710物联网工控屏在石油开采机械中的应用与优势

案例概况 客户&#xff1a;天津某石油机械公司 应用产品&#xff1a;宏集eX710物联网工控屏 应用场景&#xff1a;钻井平台设备控制系统 一、应用背景 石油开采和生产过程复杂&#xff0c;涵盖钻井平台、采油设备、压缩机、分离器、管道输送系统等多种机械设备。这些设备通…

【MySQL】第一弹----库的操作及数据类型

笔上得来终觉浅,绝知此事要躬行 &#x1f525; 个人主页&#xff1a;星云爱编程 &#x1f525; 所属专栏&#xff1a;MySQL &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 一、SQL 语句分类 DDL:数据定…