【前端面试3+1】03深拷贝浅拷贝、let和var、css盒模型、【有效括号】

news2024/9/30 21:20:10

一、深拷贝浅拷贝

深拷贝和浅拷贝都是用于复制对象或数组的概念,但它们之间有着重要的区别:

1. 浅拷贝:

        浅拷贝是指在拷贝对象或数组时,只会复制一层对象的属性或元素,而不会递归地复制嵌套的对象或数组。因此,如果原始对象或数组中包含引用类型的属性,浅拷贝后的对象或数组中的这些属性仍然指向同一个引用。修改其中一个对象或数组的属性会影响另一个对象或数组。

2. 深拷贝:

深拷贝是指在拷贝对象或数组时,会递归地复制所有嵌套的对象或数组,确保复制后的对象与原始对象完全独立,互不影响。深拷贝会创建一个全新的对象或数组,并递归地复制所有属性或元素,而不仅仅是引用。

        在JavaScript中,实现深拷贝通常需要使用递归方法或专门的库(如lodash的_.cloneDeep()方法)。深拷贝可以确保复制后的对象与原始对象完全独立,适用于需要完全复制对象或数组的场景。

二、 let和var的区别

1. 作用域:
   

  • var声明的变量存在函数作用域(function scope),即在函数内部声明的变量只在函数内部有效,在函数外部无法访问
  • let声明的变量存在块级作用域(block scope),即在块(如if语句、for循环、函数等)内部声明的变量只在该块内部有效,不会受到外部作用域的影响。

2.变量提升:

  • 使用var声明的变量会存在变量提升(hoisting)的现象,即变量的声明会被提升到当前作用域的顶部,但赋值保留在原位置。这意味着可以在变量声明之前访问变量,但其值为undefined
  • 使用let声明的变量也会存在变量提升,但不会被初始化为undefined,而是保持未初始化的状态(暂时性死区),直到变量声明的位置才能访问变量。

三、CSS盒模型 是什么?有哪几种?区别?

1.定义:

        CSS的盒模型是用来描述网页中元素布局的模型,它将每个元素看作是一个矩形的盒子,包含内容区域、内边距、边框和外边距。盒模型的主要作用是确定元素在页面中的大小和位置。

2.类型:

(1)标准盒模型:
  • 在标准盒模型中,元素的宽度和高度只包括内容区域,不包括内边距(padding)和边框(border)
  • 元素的总宽度 = 内容区域宽度 + 左右内边距 + 左右边框
  • 元素的总高度 = 内容区域高度 + 上下内边距 + 上下边框
(2)IE盒模型(怪异盒模型):
  • 在IE盒模型中,元素的宽度和高度包括内容区域、内边距和边框,即宽度和高度直接等于设置的宽度和高度
  • 元素的总宽度 = 内容区域宽度(包括内边距和边框) + 左右外边距
  • 元素的总高度 = 内容区域高度(包括内边距和边框) + 上下外边距

3.区别:

  • 主要区别在于计算元素的宽度和高度时是否包括内边距和边框。标准盒模型只包括内容区域,而IE盒模型包括内容区域、内边距和边框。
  • 大多数现代浏览器采用标准盒模型,而IE浏览器(早期版本)采用IE盒模型。可以通过CSS的box-sizing属性来指定使用哪种盒模型,常见取值为content-box(标准盒模型)和border-box(IE盒模型)。

在实际开发中,为了避免不同浏览器之间的盒模型差异,通常会通过CSS的重置样式或统一设置box-sizing: border-box;来统一盒模型的表现。

四、【算法】有效括号

题目:

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

解法:

  1. 在函数内部,首先获取输入字符串s的长度,并定义一个字符数组stack,大小为输入字符串s的长度。同时定义一个整型变量top,用于表示栈顶的索引,初始值为-1。

  2. 接下来,使用for循环遍历输入字符串s中的每个字符:

(1)如果当前字符是左括号('(','[','{'),则将其压入栈中,即将其放入stack数组中,并更新top的值。

(2)如果当前字符是右括号(')',']','}'),则进行匹配检查:

        ①如果栈为空(即top为-1),说明右括号没有匹配的左括号,直接返回false

        ②否则,取出栈顶元素topChar,并与当前右括号进行匹配:

                 如果匹配不成功,返回false

  •          如果匹配成功,将栈顶元素出栈,即更新top的值。

3.循环结束后,如果栈为空(即top为-1),说明所有括号都能正确闭合,返回true;否则返回false



bool isValid(char* s) {
    int len = strlen(s);
    char stack[len];
    int top = -1;

    for (int i = 0; i < len; i++) {
        if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
            stack[++top] = s[i];
        } else {
            if (top == -1) {
                return false;
            }
            char topChar = stack[top--];
            if ((s[i] == ')' && topChar != '(') || (s[i] == ']' && topChar != '[') || (s[i] == '}' && topChar != '{')) {
                return false;
            }
        }
    }

    return top == -1;
}

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

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

相关文章

POJ3037 + HDU-6714

两道最短路好题 POJ3037 手玩一下 发现每一点的速度可以直接搞出来&#xff0c;就是pow(2,h[1][1]-h[i][j])*V 那么从这个点出发到达别的点的耗费的时间都是上面这个数的倒数&#xff0c;然后直接跑最短路就好了 #include<iostream> #include<vector> #include<…

SiteServer 学习笔记 Day03 添加栏目

1、添加栏目&#xff0c;信息管理->栏目管理->添加按钮&#xff0c;分别添加“关于我们”、“市场服务”、“制造服务”、“测试服务”、 “工程服务”、“补充服务”、“新闻动态”、“网站地图”、“博客”、“联系我们”、“质量保证”、“Banner”。如下图。 2、栏目…

Hack.Summit() 2024再添亮点:Morphism CEO Cecilia Hsueh确认出席

随着Web3技术的风起云涌&#xff0c;区块链行业正在全球范围内以前所未有的速度崭露头角。而在这场变革的浪潮中&#xff0c;备受瞩目的区块链盛会——Hack.Summit() 2024区块链开发者大会&#xff0c;将于2024年4月9日至10日&#xff0c;在香港数码港拉开帷幕。这不仅标志着Ha…

春秋云境CVE-2023-2130

简介 在SourceCodester采购订单管理系统1.0中发现了一项被分类为关键的漏洞。受影响的是组件GET参数处理器的文件/admin/suppliers/view_details.php中的一个未知函数。对参数id的操纵导致了SQL注入。可以远程发起攻击 正文 进入靶场我们可以尝试弱口令爆破&#xff0c;最后…

深度学习编译工具链中的核心——图优化。

图优化 图优化的概念&#xff1a; 深度神经网络模型可以看做由多个算子连接而成的有向无环图&#xff0c;图中每个算子代表一类操作&#xff08;如乘法、卷积&#xff09;&#xff0c;连接各个算子的边表示数据流动。在部署深度神经网络的过程中&#xff0c;为了适应硬件平台…

3D开发工具HOOPS更新:高效、轻量化模型处理再突破!

随着数字化转型的深入发展&#xff0c;高性能图形显示成为了软件开发领域的重要研究方向。在众多工具和库中&#xff0c;HOOPS因其强大的三维图形处理能力而受到广泛关注。 HOOPS也与时俱进&#xff0c;持续更进与创新&#xff0c;近期又推出了一系列新功能&#xff0c;这些功…

Chrome之解决:插件不能使用问题(十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

MySQL面试汇总(一)

MySQL 如何定位慢查询 如何优化慢查询 索引及其底层实现 索引是一个数据结构&#xff0c;可以帮助MySQL高效获取数据。 聚簇索引和非聚簇索引 覆盖索引 索引创建原则 联合索引

《安富莱嵌入式周报》第335期:大量嵌入式书籍免费下载,CNC电机同步,智能家居比赛作品,EMF2024电子胸牌,Swift语言单片机编程,UDS Boot

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV151421Q7P4/ 《安富莱嵌入式周报》第335期&#xff1a;大量嵌入…

蓝桥杯真题讲解:网络稳定性(Kruskal重构树+LCA)

蓝桥杯真题讲解&#xff1a;网络稳定性&#xff08;Kruskal重构树LCA&#xff09; 一、视频讲解二、正解代码 一、视频讲解 蓝桥杯真题讲解&#xff1a;网络稳定性&#xff08;Kruskal重构树LCA&#xff09; 二、正解代码 //kruskal重构树 lca #include<bits/stdc.h>…

boot整合xfire

最近换了项目组&#xff0c;框架使用的boot整合的xfire&#xff0c;之前没使用过xfire&#xff0c;所以写个例子记录下&#xff0c;看 前辈的帖子 整理下 pom文件 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot…

渐变色x轴换行柱状图

// 系统上云率const optionBar {title: {text: 系统上云率,left: left,textStyle: {color: "#fff",fontSize: 14,fontWeight: 650,align: "center",},},color: [#32C5FF, #00F766, #EECB5F],grid: {top: 40,bottom: 0,},legend: { // 控制图例组件show: …

力扣面试150 删除有序数组中的重复项 双指针

Problem: 26. 删除有序数组中的重复项 思路 &#x1f469;‍&#x1f3eb; 三叶题解 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution {public int removeDuplicates(int[] nums) {int j 0, n nums.length;for(int i 0;…

后端前行Vue之路(二):模版语法之插值与指令

1.概述 Vue.js的模板语法是一种将Vue实例的数据绑定到HTML文档的方法。Vue的模板语法是一种基于HTML的扩展&#xff0c;允许开发者将Vue实例中的数据绑定到HTML元素&#xff0c;以及在HTML中使用一些简单的逻辑和指令。Vue.js 基于 HTML 的模板语法允许开发者声明式地将 DOM 绑…

从MVC 到DDD 架构

目录 一、前言 二、MVC架构 三、DDD架构 四、我为什么会使用DDD&#xff1f; 五、DDD架构分层 一、前言 最近在做一个项目&#xff0c;使用的是DDD架构思&#xff0c;觉得很不错&#xff0c;在此记录下。 二、MVC架构 MVC是一种经典的软件架构模式&#xff0c;主要用于…

GEE:将分类特征和标签提取到样本点,并以(csv/shp格式)下载到本地

作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine(GEE)平台上,下载用于机器学习分类或者回归的样本点数据,样本点数据携带了分类特征和标签信息,可以以csv格式或者SHP格式。 结果如下图所示, 文章目录 一、核心函数1.1 采样1.2 下载函数二、代码链接三、完整代码…

Go-js,css,html压缩和混淆(可直接使用)

前提条件: 本地安装nodejs环境然后配置全局环境变量。 运行以下命令安装uglify压缩工具 npm install uglify-js -g 测试是否安装成功 uglifyjs -v 使用方式: 根据不同的操作系统取对应的压缩工具,然后将压缩工具放到项目根目录下,然后执行即可 工具文件: https://gitee.com…

GPT提示词分享 —— 口播脚本

可用于撰写视频、直播、播客、分镜头和其他口语内容的脚本。 提示词&#x1f447; 请以人的口吻&#xff0c;采用缩略语、成语、过渡短语、感叹词、悬垂修饰语和口语化语言&#xff0c;避免重复短语和不自然的句子结构&#xff0c;撰写一篇关于 [主题] 的文章。 GPT3.5&#…

【论文速读】| 对大语言模型解决攻击性安全挑战的实证评估

本次分享论文为&#xff1a;An Empirical Evaluation of LLMs for Solving Offensive Security Challenges 基本信息 原文作者&#xff1a;Minghao Shao, Boyuan Chen, Sofija Jancheska, Brendan Dolan-Gavitt, Siddharth Garg, Ramesh Karri, Muhammad Shafique 作者单位&a…

喜讯!聚铭网络荣获《日志分类方法及系统》发明专利

近日&#xff0c;聚铭网络又喜获一项殊荣&#xff0c;其申报的《日志分类方法及系统》发明专利成功获得国家知识产权局的授权&#xff0c;正式荣获国家发明专利证书。 在信息化时代&#xff0c;网络安全问题日益凸显&#xff0c;日志分析作为保障网络安全的重要手段&#xff…