地平线前端实习一面复盘(加深对var的理解+展开运算符+平拍数组)

目录

  • 前言
  • 一,var的作用
  • 二,展开运算符
  • 三,平拍数组
  • 总结

前言

地平线的面试,有提示,很专业,体验很好。

可惜后面未收到消息,但还是要做复盘。收获还是很大的。

一,var的作用

且看下面五个题目:

// 题目1---4
function test(a) {
    a = 3
}
var a = 4
test(a)
console.log(a)

// 题目2---4
function test(a) {
    var a = 3
}
var a = 4
test(a)
console.log(a)

// 题目3---3
function test() {
    a = 3
}
var a = 4
test(a)
console.log(a)

// 题目4---4
function test() {
    var a = 3
}
var a = 4
test(a)
console.log(a)

上面这五个题目,实则是对var的考察。

且看第一题:

// 题目1---4
function test(a) {
    a = 3
}
var a = 4
test(a)
console.log(a)

为什么打印出来的是4?首先,声明了个变量a为4,调用函数,把a传进去,a为3,但是函数里面的a是局部变量。打印的时候,最外层的作用域是全局的a,所以打印出来为4。

// 题目2---4
function test(a) {
    var a = 3
}
var a = 4
test(a)
console.log(a)

第二题打印出的是4,为什么不是3?a虽然重新在函数内部被声明,但==在函数内部被声明的是局部变量。==最后打印出来的是全局变量。因此是4。

// 题目3---3
function test() {
    a = 3
}
var a = 4
test(a)
console.log(a)

第三题打印出来的是3,一开始在外层定义a为4,调用test的时候,虽然传进去了a,但是由于test并没有定义参数,所以没有接收到。函数内部给a赋值的时候,先看函数内部有没有声明a,答案是没有,于是去外层作用域寻找,最后找到了全局中的a并对其进行修改,修改为3,所以最后打印出来的值为3。

这段代码可以等价于:

function test() {
    a = 3
}
var a = 4
test()
console.log(a)

题目四

// 题目4---4
function test() {
    var a = 3
}
var a = 4
test(a)
console.log(a)

局部变量a为3,但是打印的是全局,所以是4。

有一句话很重点 :在函数内部被声明的是局部变量,局部变量可以访问全局变量,但是外层读不到局部变量。

二,展开运算符

const a = { j: 1, k: 2, m: {n: 3}}
const b = { m: { s: 4, t: 5 }}
const c = {...a, ...b}
console.log(c)

大部分时候,都是原封不动的拼接;但是遇到嵌套的结构,后面的会替代前面的:

{ j: 1, k: 2, m: { s: 4, t: 5 } }

我们可以再换一个顺序:

const a = { j: 1, k: 2, m: {n: 3}}
const b = { m: { s: 4, t: 5 }}
const c = {...b, ...a}
console.log(c)

最后的结果:

{ m: { n: 3 }, j: 1, k: 2 }

三,平拍数组

在这里插入图片描述
解法:递归算法。

var arr = [1, 2, [10, 90, 11], [50, 2, [22, 90]], [1]]
var arrChange = (arr) => {
    let arr1 = []
    arr.forEach(item => {
        // 如果是一个数组
        if(Array.isArray(item)) {
            arr1 = arr1.concat(arrChange(item))
        } else {
            arr1.push(item)
        }
    })
    return arr1;
}
console.log(arrChange(arr))

总结

本次面试面试官很友善,并且也提示我了很多。总之,算法和js基础非常重要。和大家共勉!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL中EXPLAIN执行计划的分析

一. 执行计划能告诉我们什么? SQL如何使用索引联接查询的执行顺序查询扫描的数据函数 二. 执行计划中的内容 SQL执行计划的输出可能为多行,每一行代表对一个数据库对象的操作 1. ID列 ID列中的如果数据为一组数字,表示执行SELECT语句的顺…

网络基础(十二):ACL与NAT

目录 一、ACL 1、ACL的概述 2、ACL的分类 3、ACL的应用 4、ACL的组成和基本原理 ​编辑 5、ACL的配置 5.1配置基本ACL 5.2配置高级ACL 二、NAT 1、NAT的概述 2、NAT的分类 3、NAT的工作原理 4、静态NAT的配置 5、动态NAT的配置 6、NAPT(端口映射&am…

自动驾驶技术:驶向未来的智能之路

导言 自动驾驶技术正引领着汽车产业向着更安全、高效、智能的未来演进。本文将深入研究自动驾驶技术的核心原理、关键技术、应用场景以及对交通、社会的深远影响。 1. 简介 自动驾驶技术是基于先进传感器、计算机视觉、机器学习等技术的创新,旨在实现汽车在不需要人…

论文降重系统同义词替换功能的改进方向 快码论文

大家好,今天来聊聊论文降重系统同义词替换功能的改进方向,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:论文降重系统同义词替换功能的改进方…

java21特性学习

jdk21下载地址 JDK21文件 JDK21是javaSE平台最新的长期支持版本。 Java SE Java Archive | Oracle JDK21版本说明 JDK 21 Release Notes, Important Changes, and Information JavaSE 版本字符串格式 Version-String Format JavaSE平台采用了基于时间的发布模型,JDK每六个…

虚拟化之安全虚拟化

虚拟化首次引入是在Armv7-A架构中。那时,Hyp模式(在AArch32中相当于EL2)仅在非安全状态下可用。当Armv8.4-A引入时,添加了对安全状态下EL2的支持作为一个可选特性。 当处理器支持安全EL2时,需要使用SCR_EL3.EEL2位从E…

HarmonyOS:使用MindSpore Lite引擎进行模型推理

场景介绍 MindSpore Lite 是一款 AI 引擎,它提供了面向不同硬件设备 AI 模型推理的功能,目前已经在图像分类、目标识别、人脸识别、文字识别等应用中广泛使用。 本文介绍使用 MindSpore Lite 推理引擎进行模型推理的通用开发流程。 基本概念 在进行开…

【elementui笔记:el-table表格的输入校验】

之前做得比较多的校验是在el-form表单里做的,但有时也遇到,需要在table内输入数据,然后校验输入的数据是否符合要求的情况。因此记录一下。 思路: 1.需要借助el-form的校验,el-table外层嵌套一层el-form,使…

Java数组(1)

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…

离线无网络环境下配置Python/Anaconda环境踩过的坑

一、前言 如果你同样需要在无网络环境下安装Python环境,这篇博客是一个很好的参考,由于内网没有网络,因此不能使用conda install/pip install等在线下载安装方式,经过个人尝试,推荐以下两种方法。 二、离线安装python…

2023年陕西省安全员C证证考试题库及陕西省安全员C证试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年陕西省安全员C证证考试题库及陕西省安全员C证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大…

MIT6.S081-实验准备

实验全程在Vmware虚拟机 (镜像:Ubuntu-20.04-beta-desktop-amd64) 中进行 一、版本控制 1.1 将mit的实验代码克隆到本地 git clone git://g.csail.mit.edu/xv6-labs-2020 1.2 修改本地git配置文件 创建github仓库,记录仓库地址 我的仓库地址就是htt…

基于AT89C51单片机的LED点阵显示屏设计

点击链接获取Keil源码与Project Backups仿真图: [[https://download.csdn.net/download/qq_64505944/88637464?spm1001.2014.3001.5503]] **[源码获取] B 源码仿真图课程设计50 工程实训(三)课题设计 班级: …

【面试】Java最新面试题资深开发-Java中的垃圾回收机制

问题七:Java中的垃圾回收机制 请简要解释Java中的垃圾回收机制是如何工作的,以及它的优缺点。如果可能,请提供一些垃圾回收器的例子,以及它们在不同场景中的适用性。 Java垃圾回收机制 工作原理: Java垃圾回收机制…

linux(centos7)离线安装mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar

1. 卸载mariadb相关rpm # 查找 rpm -qa|grep mariadb rpm -qa|grep mysql# 卸载 rpm -e --nodeps mariadb... rpm -e --nodeps mysql...2. 删除mysql相关文件 # 查找 find / -name mysql# 删除 rm -rf /var/lib/mysql...3. 查看是否有相关依赖,没有需安装 rpm -q…

考虑用序列化代理代替序列化实例

import java.io.*;// 用户类 class User implements Serializable {private String username;private String password;private String email;public User(String username, String password, String email) {this.username username;this.password password;this.email ema…

CentOS 7 部署 Nacos-2.3.0 (单机版)

CentOS 7 部署 Nacos-2.3.0 (单机版) 1. 下载 Nacos 安装包 历史版本:https://github.com/alibaba/nacos/releases/ 我选的是 2.3.0 版本,https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.tar.g…

从传统型数据库到非关系型数据库

一 什么是数据库 数据库顾名思义保存数据的仓库,其本质是一个具有数据存储功能的复杂系统软件,数据库最终把数据保存在计算机硬盘,但数据库并不是直接读写数据在硬盘,而是中间隔了一层操作系统,通过文件系统把数据保存…

2023年12月5日,北京elastic Meetup 腾讯分享的搜索优化经验

1、减少长文本模糊匹配,降低 CPU 大量分词上的开销 长文本全文查询由于在查询时需要进行分词处理,因此在查询并发较大的情况下, cpu会先于IO被打满,从而出现大量的查询拒绝。 2、设置多副本提高并发和均衡单节点压力 Search查询请…

机器学习 | 线性算法 —— 大禹治水

Machine-Learning: 《机器学习必修课:经典算法与Python实战》配套代码 - Gitee.com 如果说KNN算法体现了人们对空间距离的理解, 那么线性算法则体现了人们对事物趋势上的认识。 注意图中横纵坐标的不同。 线性回归、多项式回归多用于预测,逻辑…