「2022」打算跳槽涨薪,必问面试题及答案 -- JavaScript 篇

2023-11-02

Hi,我是,今日与君共勉!

1、深浅拷贝的区别有哪些?

要说 js 的深浅拷贝,就不得不提 js 的两大数据类型:基本数据类型和引用类型。基本数据类型的变量名和值都存储在栈中,对于引用类型的变量名存储在栈中,而值存储在堆中。由于存储方式不同,所以导致了他们复制的时候方式不同。

浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精准拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到另外一个对象。

深拷贝是将一个对象从内存中完整的拷贝一份出来,从内存堆中存放一个新的对象。这是两个对象,所以修改其中一个,另外一个不会受影响。

深浅拷贝主要针对的是引用类型,简单数据类型不受影响。

相关笔试题

var person = {
 name:"",
 hobby:['学习','敲代码','潜水']
}
function copy(source){
 var newObj = new Object()
 for(var i in source){
  if(source.hasOwnProperty(i)){
   newObj[i] = source[i]
   }
  }
 return newObj
}
var p1 = copy(person);
p1.name = "Web Person"
console.log(person.name)
console.log(p1.name)
p1.hobby = ["内卷"]
console.info(person.hobby)
console.info(p1.hobby)
/*运行结果:

 Web Person
["学习", "敲代码", "潜水"]
["内卷"]
*/

2、js 数据类型有哪些?

js 数据类型一共有 8 种,分为两大类:基本类型和引用类型。

它们的数据类型分别为:

基本类型:string、number、boolean、null、undefined、symbol、bigint

引用类型:object

相关面试题

// 注意:其他类型与数值进行相加时,其他类型的转为 number 类型
console.log( true+1 ) // 2
console.log( undefined +1 ) // NaN

console.log( null ) //object
console.log( undefined ) // undefined

3、延迟加载 js 的方式有哪些?有什么区别呢?

共有 6 种方式,分别为:

  • async
  • defer
  • js 最后加载
  • 利用 setTimeout
  • 动态创建 DOM 的方式
  • 使用 jQuery 的 getScript 方法

它们的区别介绍:

1、async:为

2、defer 会等到 html 解析完成之后再执行 js 代码,如果有多个脚本时,会按照顺序依次执行脚本。

<script  defer type="text/javascript" src="demo1.js" ></script>

3、js 最后加载

把 js 外部引入的文件放置在页面的底部,让 js 最后加载,从而加快页面加载速度。

4、利用 setTimeout

5、动态创建 DOM 的方式

var element = document.createElement("script");  
element.src = "box.js";  
document.body.appendChild(element);

这种方式通过操作动态加载 js 文件,不触发的时候不加载,减少页面文件大小,加快加载速度。

6、使用 jQuery 的 getScript 方法

$.getScript( "box.js",function(){//回调函数,成功获取文件后执行的函数  
      console.log("脚本加载完成")  
});

相关面试题:

<!doctype html>
<html>
 <head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script type="text/javascript" src="box.js"></script>
 </head>
 <body>
  <div id="box"></div>
 </body>
</html>

//box.js 代码如下
console.log( document.getElementById('box') )  // null

box.js 想正常获取元素 box ,并进行一系列操作应该如何延迟加载 js 文件呢?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

「2022」打算跳槽涨薪,必问面试题及答案 -- JavaScript 篇 的相关文章

  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 转义 h 轮廓

    因此 我一直在尝试找出在被较低级别的标题吸引后添加内容的最佳方法是什么 section h1 Title of Section h1 h2 Related 1 h2 h2 Related 2 h2 p I NEED THIS TO BE P
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • 删除 IE9 边缘周围的 2px 灰色边框

    我正在尝试对这个网站进行编码 尝试关键字 并且我正在尝试找出如何删除这个阴影2px灰色边框延伸到 IE9 窗口的内部 至少顶部 左侧和底部 我的边距设置为零 因此所有页面元素都到达页面的最边缘 但使用 IE9 它们会停在这个灰色边框处 我没
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 禁用允许文本选择的

    残疾人可以吗

随机推荐

  • TypeError: ‘DataContainer‘ object is not iterable解决

    mmsegmentation训练的过程中eval时报错 环境如下 sys platform linux Python 3 8 13 default Mar 28 2022 11 38 47 GCC 7 5 0 CUDA available
  • php assert执行命令,代码执行&命令执行&命令注入

    代码执行 命令执行 命令注入 代码执行 代码执行是靠脚本代码调用操作系统的命令 eval eval string code mixed 把字符串 code 作为PHP代码执行 eval POST c 直接蚁剑链接密码为c 中国菜刀 ckni
  • mapbox-gl图形绘制并编辑已有图层

    文章目录 前言 1 react中使用mapbox gl draw绘制 2 已有图层编辑 3 绘图控件的控制 4 数据缓存造成的一个bug 问题描述 原因 解决方案 总结 前言 相信经常和地理数据打交道的小伙伴都有过标绘地理数据的经历 使用A
  • 窗口子类化和超类化

    目录 窗口子类化 窗口超类化 窗口子类化 窗口子类化的目的是在不修改现有代码的前提下 扩展现有窗口 控件的功能 它的思路很简单 就是将窗口过程地址修改为一个新函数地址 新的窗口过程函数处理自己感兴趣的消息 将不感兴趣的消息丢给原窗口过程处理
  • 11、Iterable迭代

    3 6 Iterator es6新特性 使用iterator来遍历迭代数组 map set 遍历数组 通过for of for in 下标 var arr 3 4 5 for var x of arr console log x 遍历map
  • Python中字符串转义字符的用法----退格符\b

    鄙人第一次写博客 如果有错误 或者表达不当的 希望有大佬们多多指点 我将不甚感激 退格符 b b代表backspace 平时电脑使用这个键就是删除 可以把一个退格符看成一个backspace键 他的原理相当于把一个字符删去 用后面的字符代替
  • 第二章 索引-练习题

    第二章 索引 练习题 首先要导入对应的模块 import pandas as pd import numpy as np Ex1 公司员工数据集 现有一份公司员工数据集 df pd read csv data company csv df
  • 为什么苹果蓝牙耳机连上还是公放_如何测试蓝牙设备的延时

    蓝牙设备的延时准确测量很复杂 但是这里有个小工具 自己动手就可以做 数据一出胜过嘴炮 1 首先去下载安装superpowered latency ios 安卓版的都有 Test iOS and Android Audio Latency w
  • Javafx集成sqlite数据库

    什么是SQLite SQLite是一款非常轻量级的关系数据库系统 支持多数SQL92标准 SQLite在使用前不需要安装设置 不需要进程来启动 停止或配置 而其他大多数SQL数据库引擎是作为一个单独的服务器进程 被程序使用某种内部进程通信
  • input输入子系统分析

    input输入子系统分析 input子系统学习 总体框架分析 从事件处理过程 程序 看input子系统 对设备驱动层的分析 对事件处理层的分析 对核心处理层 input c 的分析 input子系统学习 Input子系统作为linux下很重
  • 静态代码分析工具清单:开源篇

    http hao jobbole com static code analysis tool list opensource lang utm source blog jobbole com utm medium sidebar resou
  • SaaS 系统完全开源介绍

    平台简介 芋道 以开发者为中心 打造中国第一流的快速开发平台 全部开源 个人与企业可 100 免费使用 架构图 管理后台的 Vue3 版本采用 vue element plus admin Vue2 版本采用 vue element adm
  • 为什么延时函数while()没有递减

    因为有时钟中断 1ms中断一次 如何减1
  • 【java】mybatis-plus lambda表达式符号总结

    1 函数名及用法 查询学生 QueryWrapper
  • 基于java的俄罗斯方块小游戏设计(含源文件)

    欢迎添加微信互相交流学习哦 项目源码 https gitee com oklongmm biye 题 目 小游戏开发 摘 要 俄罗斯方块是我们最常见的游戏之一 该游戏出现过在掌上游戏机 家用游戏机 手机游戏和电脑游戏中 因此俄罗斯方块也是一
  • TencentOS-tiny 内核基础组件(十 七)- 环形队列

    一 内核基础组件 环形队列 概述 环形队列本质上就是支持先入先出操作的环形buffer 是系统的一个基础组件 通常用来作为实现上层机制的底层数据容器 API讲解 编程实例 1 编写main c示例代码 USER CODE END Heade
  • Lambda表达式、函数式接口

    一 Lambda 1 1 概述 Lambda表达式是一种没有名字的函数 也可以称为闭包 是Java8发布的最重要新特性 本质上是一段匿名内部类 也可以是一段可以传递的代码 还有的叫箭头函数 1 2 优点 是匿名内部类的简写方式 使代码更加简
  • 提交表单不刷新当前页面

    使用ajax上传文件方法 众所周知ajax是使用了浏览器内部的XmlHttpRequest对象来传输XML数据的 既然是Xml的数据传输 那么传输的数据肯定是文本的 而文件上传则需要传输二进制的数据 显然用ajax是不可能的 这里要说的是用
  • Error getting 'State' for /org/freedesktop/NetworkManager/ActiveConnection/0: (19) Method "Get" wit

    虚拟机使用的是无线驱动 但是本机使用的却是有线网络 导致激活不了
  • 「2022」打算跳槽涨薪,必问面试题及答案 -- JavaScript 篇

    Hi 我是 今日与君共勉 1 深浅拷贝的区别有哪些 要说 js 的深浅拷贝 就不得不提 js 的两大数据类型 基本数据类型和引用类型 基本数据类型的变量名和值都存储在栈中 对于引用类型的变量名存储在栈中 而值存储在堆中 由于存储方式不同 所