js面试题|[2024-12-10]

1.延迟加载JS有哪些方式?

延迟加载:async、defer

例如:<script defer type="text/javascript" src='script.js'></script>

defer:等html全部解析完毕,才会执行js代码,顺次执行js脚本

async:async是和html解析同步的(一起的),不是顺次执行js脚本(谁先加载完谁先执行)。

 2.JS数据类型有哪些?

基本类型:string、number、boolean、undefined、null、symbol、bigint(有争议)

引用类型:object

NaN是一个数值类型,但不是一个具体的数字。

3.JS数据类型考题

// 1.
alter(true + 1)  // 2
alter('name' + true) // nametrue
alter(undefined + 1) // NaN
alter(typeof null) // object

字符串和其他类型 相加,变成连接的形式。

//2
alter(typeof(NaN)) // number
alter(typeof(undefined)) // undefined
alter(typeof(null)) // object

4.nul和undefined的区别

 1.作者在设计js的时候是先设计的null

           (为什么设计了null:最初设计js的时候借鉴了java的语言)

2.null会被隐式转换成0,很不容易发现错误

3.先有null后有undefined,出来undefined是为了填补之前的坑

具体区别:JavaScript的最初版本是这样区分的:null是一个表示“无”的对象(空对象指针),转为数值时为0;undefined是一个表示“无”的原始值,转为数值时为NaN。

5.==和===有什么不同?

==:比较的是值

        string == number || boolean || ......都会隐式转换

        通过valueOf转换(valueOf() 方法通常由JavaScript在后台自动调用,并不显式地出现在代码中)
===:除了比较值,还比较类型

        建议使用===,因为==可能存在一些问题。

6.JS微任务和宏任务

1.JS是单线程的语言。
2.JS代码执行流程:同步执行完==》事件循环

        同步的任务都执行完了,才会执行事件循环的内容

        进入事件循环:请求ajax、定时器、事件......

3.事件循环中包含:【微任务、宏任务】

        微任务:Promise.then

        宏任务:setTimeout..

要执行宏任务的前提是清空了所有的微任务

流程:同步==>事件循环【微任务和宏任务】==>微任务==>宏任务==>微任务.....
为什么JS是单线程?

        单线程就是同一个时间只能做一件事。JS的单线程与它的用途有关,作为浏览器脚本语言,它的主要用途就是与用户互动,以及操作DOM,这就决定了它的单线程。

setTimeout(function(){console.log('1') // 宏任务
})new Promise((resolve)=>{console.log('1 promise 1');  // 同步resolve();
}).then(()=>{console.log('微1') // 微任务
}).then(()=>{console.log('微2') // 微任务
})console.log('2')  // 同步--------------------------
输出的结果:
1 promise 1
2
微1
微2
1

7.JS作用域考题

1.除了函数外,JS是没有块级作用域的

2.作用域链:内部可以访问外部的变量,但是外部不能访问内部的变量

        注意:如果内部有,优先查找到内部,如果内部没有就查找外部的

3.注意声明变量是用var还是没有写(没有写默认window.)

4.注意:js有变量提升的机制【变量悬挂声明】

function fun(){ // var str; 你看不到的,是js独有的机制console.log(str); // undefinedvar str = '你好吗?'console.log(str); // 你好吗?
}

5.优先级:声明变量 > 声明普通函数 > 参数 > 变量提升

面试的时候怎么看:

1.本层作用域有没有此变量【注意变量提升】

2.注意:js除了函数外没有块级作用域

3.普通声明函数是不看写函数的顺序

考题1:

function c(){var b = 1;function a(){  // 注意,此处有变量提升 var b;console.log(b);var b = 2;console.log(b);}a();console.log(b);
}c();-----------------
运行结果:
undefined
2
1

考题2:

var name = 'a';
(function(){ // var name;if(typeof name == 'undefined'){var name = 'b';console.log('111'+name);}else{console.log('222'+name);}})-----------------
得到的结果都是: 111b
<script type="text/javascript"> // var a;console.log(a);
if(false){var a = 10;
}
console.log(a)
</script>----------------------
undefined
undefined

考题3:

var bar = 1;
function test(){ // var bar;console.log(bar); // undefinedvar bar = 2;console.log(bar); // 2
}
test()--------------------
undefined
2

考题4:

function fun(a){var a = 10;function a(){}console.log(a);
}
fun(100);

8.JS对象考题

JS对象注意点:

1.对象是通过new操作符构建出来的,所以对象之间不相等

2.对象注意:引用类型

3.对象的key都是字符串类型

4.对象如何找属性|方法

        先在对象本身找 ===> 构造函数中找 ===> 对象原型中找 ===> 构造函数原型中找 ===> 对象上一层原型找

考题1:

[1,2,3] === [1,2,3]  // false


考题2:

var arr1 = [1,2,3]
var arr2 = arr1;
console.log(arr1 === arr2)  // true

考题3:

var obj1 = {a:'hello'
}
var obj2 = obj1;
obj2.a = 'world';
console.log(obj1); // {a:world}
(function(){console.log(a); // undefinedvar a = 1;
})();

考题4:

var a = {}
var b = {key:'a'    
} 
var c = {key:'c'
}a[b] = '123'
a[c] = '456'
console.log(a[b]); // '456'

考题5:

1.每一个函数都自带一个prototype【原型】

        注意:对象拥有__proto__

2.new Fun 该Fun构造函数的原型指向于对象(new Fun)的原型

function Fun(){this.a = '在Fun函数中添加的'; // 2
}
Fun.prototype.a = '这是Fun原型添加的'; // 4
let obj = new Fun(); // var obj.a; undefined // 6
obj.a = '对象本身'; // 1
obj.__proto__.a = '这是对象原型添加的'; // 3Object.a = '这是Object添加的'; // 5
console.log(obj.a);

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

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

相关文章

朗新科技集团如何用云消息队列 RocketMQ 版“快、准、狠”破解业务难题?

作者&#xff1a;邹星宇、刘尧 朗新科技集团&#xff1a;让数字化的世界更美好 朗新科技集团股份有限公司是领先的能源科技企业&#xff0c;长期深耕电力能源领域&#xff0c;通过新一代数字化、人工智能、物联网、电力电子技术等新质生产力&#xff0c;服务城市、产业、生活中…

在ArcGISPro中创作精美地图

建议从数据下载到最后的出图都跟着走一下&#xff0c;提供了一个完整且全面的教程&#xff0c;建议从数据下载开始&#xff0c;这样可以对ArcGISPro制图流程有一个全面的感触和认知。 1. 绘制北极海冰地图 20 世纪&#xff0c;气候变化导致极地海冰迅速减少。 自 1978 年以来…

鸿蒙实现数据管理

目录&#xff1a; 1、鸿蒙实现数据管理的三种方式2、用户首选项3、键值型数据管理3.1、获取KVManager实例&#xff0c;用于管理数据库对象3.2、创建并获取键值数据库3.3、调用put()方法向键值数据库中插入数据3.4、调用get()方法获取指定键的值3.5、调用delete()方法删除指定键…

JAVA面试汇总(三)集合(一)

JAVA多线程七篇终于写完了&#xff0c;今天开始了新的JAVA面试汇总&#xff0c;集合部分&#xff0c;这部分其实比多线程有意思多了&#xff0c;这个计划最多五篇&#xff0c;也许不到五篇&#xff0c;这是第一篇&#xff0c;开卷。 1.Collection和Collections 的区别&#xff…

使用 ASP.NET Core HttpLoggingMiddleware 记录 http 请求/响应

我们发布了一个应用程序&#xff0c;该应用程序运行在一个相当隐蔽的 WAF 后面。他们向我们保证&#xff0c;他们的产品不会以任何方式干扰我们的应用程序。这是错误的。他们删除了我们几乎所有的“自定义”标头。为了“证明”这一点&#xff0c;我构建了一个中间件&#xff0c…

qt 封装 调用 dll

这个目录下 &#xff0c;第一个收藏的这个 &#xff0c;可以用&#xff0c; 但是有几个地方要注意 第一.需要将dll的头文件添加到qt的文件夹里面 第二&#xff0c;需要在pro文件里面添加动态库路径 第三&#xff0c;如果调用dll失败&#xff0c;那么大概需要将dll文件放在e…

基于自注意力网络的SASRec

运用了自注意力网络&#xff08;self-attention network&#xff0c;SAN&#xff09;的序列推荐算法&#xff08;SASRec&#xff09;能以并行化的方式捕捉同一序列上不同时间步间的转移关系&#xff0c;最后通过加权求和的方式得出每个时间步的序列特征。 算法原理&#xff1a;…

从一个Bug谈前端响应拦截器的应用

一、问题场景 今天在开发商品管理系统时&#xff0c;遇到了一个有趣的问题&#xff1a;当添加重复的商品编号时&#xff0c;页面同时弹出了两条 "商品编号已存在" 错误提示&#xff1a; 这个问题暴露了前端错误处理机制的混乱&#xff0c;让我们从这个问题出发&…

【机器学习chp9】集成学习

一、集成学习的概念 1. 什么是集成学习 定义&#xff1a;集成学习是一种通过组合多个模型&#xff08;称为基学习器&#xff09;来提升整体系统性能的方法。优点&#xff1a; 单个模型性能可能已经优化到极限&#xff0c;难以进一步提高&#xff0c;集成学习通过少量额外工作…

复合机器人整体解决方案

复合机器人是一种集成移动机器人和协作机器人两项功能为一身的新型机器人&#xff0c;更符合人们想象中“脑、眼、手、脚”融合的机器人终极形态。复合机器人的整体解决方案通常涉及多个方面&#xff0c;包括机器人本体、控制系统、感知系统、执行系统以及周边配套设备等。以下…

SpringBoot【十】mybatis之xml映射文件>、<=等特殊符号写法!

一、前言&#x1f525; 环境说明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 在利用mybatis进行开发的时候&#xff0c;编写sql时可能少不了>、<等比较符号&#xff0c;但是在mapper映射文件中直接使用是不行的&#xff0c;会报错&#xff0…

Elasticsearch:使用阿里 infererence API 及 semantic text 进行向量搜索

在之前的文章 “Elasticsearch 开放推理 API 新增阿里云 AI 搜索支持”&#xff0c;它详细描述了如何使用 Elastic inference API 来针对阿里的密集向量模型&#xff0c;稀疏向量模型&#xff0c; 重新排名及 completion 进行展示。在那篇文章里&#xff0c;它使用了很多的英文…

windows下Qt5自动编译配置QtMqtt环境(11)

文章目录 [toc]1、概述2、准备1.1 下载源码1.2 配置环境1.3 解释原理 3、编译4、验证5、参考6、视频 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;Qt网络编程 &#x1f448; 1、概述 Qt默认是不包含mqtt库的&#xff0c;如果需要使用到mqtt库就只能自己编译配…

关于OpenAI Sora上线!AI视频生成的新纪元

OpenAI Sora的上线无疑是人工智能领域的一个重要进展&#xff0c;它标志着AI技术在视频生成和编辑方面迈出了一大步。 引言 在人工智能的快速发展中&#xff0c;OpenAI的最新力作——Sora&#xff0c;标志着AI视频生成技术的一个新纪元。Sora的上线不仅是技术上的一次飞跃&am…

K8S对接ceph的RBD块存储

1 PG数量限制问题 1.1 原因分析 1.还是老样子&#xff0c;先创建存储池&#xff0c;在初始化为rbd。 [rootceph141~]# ceph osd pool create wenzhiyong-k8s 128 128 Error ERANGE: pg_num 128 size 3 for this pool would result in 295 cumulative PGs per OSD (2067 tot…

Windows11安装Isaac Lab

1.1 下载文件 将 Isaac Lab 仓库克隆到您的工作空间&#xff1a; git clone https://github.com/isaac-sim/IsaacLab.git 1.2 创建Isaac Sim符号链接 F:cd IsaacLab 官方文档里路径/有问题&#xff0c;改成\&#xff09;&#xff1a; # 打开IsaacLab目录cd IsaacLab# 使用…

NES游戏机项目制作笔记(未完成)

24年12月1日晚记——在网上找项目学习的时候发现一个有意思的项目&#xff0c;准备靠这个应用一些STM32的高级功能。值得提醒的是——目的在于学习不可贪杯&#xff0c;注意效率 01 根据项目需求分析 为确保充分考虑每一个细节&#xff0c;并且让自己高效的完成项目制作&#…

ElasticSearch - 理解doc Values与Inverted Index倒排索引

文章目录 概述倒排索引&#xff1a;从图书馆的索引卡片谈起倒排索引的工作原理 docValues&#xff1a;从数据库的列式存储说起docValues的工作原理 docValues与倒排索引的对比两者的联系&#xff1a;组合使用&#xff0c;优化搜索与分析 小结 概述 在使用 Elasticsearch 进行大…

前端H5移动端基础框架模板 :Vue3 + Vite5 + Pinia + Vant4 + Sass + 附源码

技术栈选用 Vue3 Vite5 Pinia Vant4 Sass 源码地址&#xff1a; git clone https://gitee.com/gaiya001/h5-APP.git1. 1.vite.config.js文件配置 ** import { defineConfig } from vite // 导入 Vite 的配置函数 import vue from vitejs/plugin-vue // 导入 Vue 插件 i…

游戏引擎学习第36天

仓库 :https://gitee.com/mrxiao_com/2d_game 回顾之前的内容 在这个程序中&#xff0c;目标是通过手动编写代码来从头开始制作一个完整的游戏。整个过程不使用任何库或现成的游戏引擎&#xff0c;这样做的目的是为了能够全面了解游戏执行的每一个细节。开发过程中&#xff0…