javaScript常见面试题(二)

news2024/11/19 18:30:12

一、浅拷贝和深拷贝

浅拷贝:(1)对于基本数据类型,拷贝的是值,修改的时候数据互不影响;(2)对于引用数据类型,拷贝的是在堆内存中存储的内存地址,修改的时候,数据来自同一个内存地址,所以数据会受到影响。比如,修改其中一个拷贝过来的对象,另一个对象中的也会改变。常用es6中的object.assign()实现。

深拷贝:是将一个对象完整的拷贝出来,在堆内存中开辟一块新的内存地址来存储,所以修改的时候,数据之间不会互相影响。常用es6中的扩展运算符array.concat()实现。

二、防抖和节流

防抖:一段时间内只触发一次,如果在这段时间内再次触发,会重新开始计时。多次触发只有最后一次生效

节流:一段时间内只触发一次,如果在这段时间内再次触发,是不会重新计时的。多次触发只有第一次生效

通俗理解:王者荣耀的回城和技能冷却时间。回城使用的就是防抖,如果多次点击,只有最后一次点击之后才算是开始回城。技能冷却使用的就是节流,点击一个技能之后,只有当冷却时间结束,才可以点击下一次,在这过程中重复点击是不生效的。

三、http状态码

2xx:表示请求成功

        200:表示一切正常。

3xx:表示重定向

        301:永久重定向。

        302:临时重定向。

4xx:表示客户端错误

        400:请求报文中出现语法错误。

        403:跨域问题。

        404:请求的资源不存在。

5xx:表示服务端错误

        500:服务端在处理请求时出现错误。

四、ES6新特性

(1)let,const:定义变量,常量;

(2)模板字符串:反引号包裹字符串,中间的变量使用${}包裹;

(3)解构赋值:解构对象,数组中的单个数据;

(4)箭头函数:()=> {};

(5)set和map数据结构:set会自动去重;

(6)symbol:基本数据类型,里面的值唯一;

(7) class类:使用extends实现继承;

(8)for...of循环:遍历数组、对象,set和map;

(9)promise(async,await):解决异步编程;

(10)展开运算符:将数组,对象中的值展开,还可以将set转换为数组;

(11)proxy:代理对象,监听对象变化,触发相应逻辑。

五、ajax的使用

(1)创建ajax对象:let ajax = new XMLHttpRequest()

(2)创建ajax请求:ajax.open('请求方式','请求的url地址')

(3)发送ajax请求:ajax.send()

(4)接收服务器返回结果

ajax.onreadystatechange = function (){
    if(ajax.readyState == 4 && ajax.status == 200){
		var text = ajax.responseText;
		console.log(text);
	}
}

六、cookie,localstorage,sessionstorage的区别

(1)存储大小:cookie最大只能达到4K,localstorage和sessionstorage能达到5M,甚至更大。

(2)数据的有效时间

        cookie:设置的有一个过期时间,在这个时间过期之前,cookie都是存在的,即使浏览器窗口关闭;

        localstorage:数据一直有效,即使浏览器窗口关闭,只有手动删除才会被清除数据;

        sessionstorage:数据在浏览器窗口关闭后自动删除。

(3)数据与服务器的交互方式:cookie的数据会自动发送到服务器,localstorage和sessionstorage不会发送到服务器,仅在客户端存储。

(4)作用域

        cookie和localstorage :在所有同源(协议、域名、端口都相同)窗口共享;

        sessionstorage :仅在一个浏览器共享,不同浏览器不共享。

七、promise

promise是解决异步编程的一种方案。

三种状态:pending(等待中),resolved(成功),rejected(失败)

两种转换过程
(1)pending=>resolved:从未完成变成成功,在异步操作成功时调用
(2)pending=>rejected:从未完成变成失败,在异步操作失败时调用

promise常用方法
(1)then:一般用来接收异步任务成功的结果
(2)catch:接收失败结果,获取异常信息
(3)finally:不管是成功还是失败都会执行

使用场景:发送ajax或axios请求

好处:防止出现回调地狱,提高代码可读性,像同步操作那样去执行异步操作

八、箭头函数和普通函数的区别

(1)箭头函数没有this,它继承的是父级的this;

(2)箭头函数不能使用new操作符;

(3)箭头函数不能通过call,apply,bind改变this的指向

(4)箭头函数可以简写:()=> { }

(5)箭头函数没有函数提升

(6)箭头函数没有原型和arguments对象

 九、async和await

(1)async和await与promise一样,都是用来解决异步编程问题的,它可以避免回调地狱,以最接近同步代码的方式编写异步代码。

(2)async和await必须同时使用

(3)async:
        用来声明一个异步函数,写在函数名之前,这个函数需要返回一个promise对象;
        async是Generator的语法糖,它将 Generator 函数和自动执行器,包装在一个函数里来实现。

(4)await:
        用来等待这个函数返回的promise对象的resolved(成功)结果,并拿到这个结果(res);    
        await的好处是可以等数据加载过来之后才去执行下边的js代码;
        await有两个作用,一是作为求值关键字,二就是将异步操作转为同步操作。

十、解构赋值

ES6的解构赋值本质上就是“模式匹配”,主要是针对数组和对象。只要等号两边的模式相同左边的变量就会自动匹配右边相对应的值,如果匹配不成功,相应的变量就是undefined

// 解构目标为数组
let [a, [[b], c]] = [1, [[2], 3]];
// a = 1
// b = 2
// c = 3
// 解构目标为字符串
let [a, b, c, d, e] = 'hello';
// a = 'h'
// b = 'e'
// c = 'l'
// d = 'l'
// e = 'o'
// 解构目标为对象
let obj = {p: ['hello', {y: 'world'}] };
let {p: [x, { y }] } = obj;
// x = 'hello'
// y = 'world'

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

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

相关文章

mapreduce基础: 手写本地wordcount案例

文章目录 一、源代码1. WordCountMapper类2. WordCountReducer类3. WordCountDriver类 二、运行截图 一、源代码 1. WordCountMapper类 package org.example.wordcount;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apac…

yum库和nfs共享服务

yum库 redhat,centos用的是.rpm的包,用yum解决依赖包关系下载 ubuntu,debian用的是.deb的包,用apt解决依赖包的关系下载 yum软件仓库的提供方式 FTP服务: ftp://… HTTP服务: http://…或者https://… 本地目录: fi…

母婴品牌内容输出怎么做?“四板斧”送你

新媒体时代,信息大爆炸,人们的注意力有限,有噱头和亮点的内容才能博得注意,成为用户关注的焦点。 母婴行业重视品牌效益和产品的质量,毕竟类似“三聚氰胺”的惨剧谁也不希望再发生。母婴产品的质量依赖技术和生产线支…

C语言从入门到精通第9天(循环结构的使用)

循环结构的使用 while语句do-while语句for语句嵌套循环 循环结构可以重复的执行一段代码块,在C语言中提供了三种不同类型的循环结构:for、while和do-while。 while语句 语法: while(表达式){ 语句; } 如果表达式为真则执行结构体…

并发编程学习笔记

为什么学? 只要去做一个技术含量稍微好点的系统,并发包下面的东西是很容易会要用到的 synchronized(Object){ } 主要是用来给对象加锁 synchronized底层原理 首先监视器的计数器是0,然后线程一访问,会将值改为1,…

[Gitops--4] OpenELB

OpenELB OpenELB是一个开源的负载均衡器,功能和metalLB类似 OpenELB主要两种工作模式: Layer2和BGP模式.目前OpenELB的BGP不支持ipv6 OpenELB核心思想就是通过某种方式将特定的VIP的流量引导k8s集群中,然后通过Kube-proxy将流量转发到后面的特定服务. 1. OpenELB介绍 1.1 La…

对于python文件,敲下回车后发生了什么

引言 我们常说 Python 一是门解释型语言,只需要敲下 python code.py就可以运行编写的代码,而无需使用类似于 javac 或者 gcc 进行编译。那么,Python 解释器是真的一行一行读取 Python 源代码而后执行吗? 实际上,Python 在执行程序…

为什么要进行倾斜摄影三维模型的顶层合并?

为什么要进行倾斜摄影三维模型的顶层合并? 1、倾斜摄影三维模型顶层合并的重要性 倾斜摄影三维模型的顶层合并是指将拍摄同一区域的多个倾斜角度的影像进行融合,生成一个连续的、完整的三维地理信息数据。其原因主要有以下几点: &#xff0…

关于倾斜摄影三维模型轻量化数据大小和质量关系分析

关于倾斜摄影三维模型轻量化数据大小和质量关系分析 倾斜摄影三维模型轻量化是一种常用的技术,通过对原始三维模型数据进行压缩和简化,减小其数据大小,从而提高数据传输和展示效率。然而,轻量化过程中可能会对数据质量产生影响。以…

性能测试——安装Loadrunner11.0的详细步骤

一、下载Loadrunner11.0版本 去相关网站下载即可 二、安装 (windows与虚拟机上安装操作大相径庭) 1、将ISO文件导入,打开光驱,运行“setup.exe“ 2、点击安装,部分机器会提示缺少“Microsoft Visual C 2005 SP1运行组…

有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 来源:力扣(LeetCode) 链接:https://leetco…

Java 将json中key值中带有下划线的部分转为驼峰格式

一、背景说明 在开发过程中,有时会遇到第三方厂商提供的接口返回结果不是严格按照驼峰命名,需要将其中带有下划线的字段进行格式化转换为驼峰命名。 如下图中的self_auth、user_id、user_name、creator_name 和 others_auths 等 key 值。 如果是对 JS…

Mysql 45讲和45问笔记(未完待续0203/04/24)

一、mysql 45讲 1)索引的本质讲解 定义解释 所以是帮助Mysql高效获取数据的排好序的数据结构 索引数据结构 ①二叉树 ②红黑树 ③Hash表 ④B-Tree 原理讲解 可以看到右边的数据结构里面,是按照k-v来存数据结构的,key是col2的字段&#xf…

【Linux】线程-线程概念

线程概念 什么是线程线程的优点和缺点线程的用途和线程异常线程与进程的区别 什么是线程 实际上,线程是一个进程内部的控制序列,一个程序的一个执行线路就是一个线程。 并且一个进程中至少有一个线程,本质上,一个进程内部如果有多…

6. 树的入门

6. 树的入门 之前我们实现的符号表中,不难看出,符号表的增删查操作,随着元素个数N的增多,其耗时也是线性增多的,时间复杂度都是O(n),为了提高运算效率,接下来我们学习树这种数据结构。 6.1 树的基本定义 …

MybatisPlus-入门项目搭建、SQL日志打印、实体类注解、简单持久层操作

Mybatis-Plus mybatis plus概述 ​ Mybatis Plus (opens new window)简称 MP,它是一个MyBatis 的增加工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 Mybatis Plus官网:https://…

拉格朗日函数对偶问题、KKT条件

一、概念介绍 KKT最优化条件是Karush(1939)以及Kuhn和Tucker(1951)先后独立发表出来的,但在Kuhn和Tucker发表之后才逐渐受到重视,因此多数情况下记载成库恩-塔克条件(Kuhn-Tucker conditions)。先介绍几个优化的概念。 1.1 优化 最优化问题&#xff0…

大彩串口屏新品发布:大彩7寸新品RS485/232双通讯口人机界面发布!

一、产品介绍 新品发布:大彩7寸新品RS485/232双通讯口人机界面发布! 此次发布7.0寸外壳HMI产品采用普清800*480液晶屏、触摸选用电阻触摸,硬件性能上与M型医用级组态串口屏一样,软件上拥有炫酷的动画效果,页面切换流…

路侧激光雷达目标检测系统-篇2

本篇文章承接上文,主要阐述代码,分布的成果等工作。识别结果为单帧图片,每一张图片识别完之后,放在一起,就可以连续播放单帧文件,变成视频,或者直接在matlab图窗里面播放。关于这个函数的功能我…

HTML+CSS+JS 学习笔记(三)———Javascript(中)

🌱博客主页:大寄一场. 🌱系列专栏:前端 🌱往期回顾:HTMLCSSJS 学习笔记(三)———Javascript(上) 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 JavaScrip…