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

news2024/11/27 8:24:45

目录

  • 前言
  • 一,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基础非常重要。和大家共勉!

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

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

相关文章

30. 深度学习进阶 - 池化

Hi,你好。我是茶桁。 上一节课,我们详细的学习了卷积的原理,在这个过程中给大家讲了一个比较重要的概念,叫做input channel,和output channel。 当然现在不需要直接去实现, 卷积的原理PyTorch、或者TensorFlow什么的…

Python tkinter 初探Toplevel控件搭建父子窗口

目录 Toplevel控件搭建父子窗口 最简明的父子窗口框架 改进一:屏蔽和开放按钮 改进二:子窗口始终在主窗口之上 改进三:增加子窗口的关闭协议 改进四:使子窗口长获焦点 总结 Toplevel控件搭建父子窗口 最近,用P…

直播江湖:东方甄选与董宇辉的权力游戏

出品| 大力财经 文 | 魏力 近期,围绕东方甄选的小作文事件引起了广泛关注,有人将其解读为一场巧妙策划的事件营销,然而,舆情的不可控性使得事态逐渐演变为一场复杂的利益博弈。 东方甄选与董宇辉的“蜜月期”可以说是双方互相成就…

【机器学习】梯度下降法:从底层手写实现线性回归

【机器学习】Building-Linear-Regression-from-Scratch 线性回归 Linear Regression0. 数据的导入与相关预处理0.工具函数1. 批量梯度下降法 Batch Gradient Descent2. 小批量梯度下降法 Mini Batch Gradient Descent(在批量方面进行了改进)3. 自适应梯度…

【Gradle】运行时一直要下载 gradle-8.5-bin.zip

如何解决 Downloading https://services.gradle.org/distributions/gradle-8.5-bin.zip 的问题 文章目录 1. 问题描述2. 解决方法1)找到 gradle-wrapper.properties2)修改 distributionUrl 对应的值 3. 验证 1. 问题描述 在执行 gradlew 命令的时候&…

SpringIOC之作用域Scope

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

Qt for Android设置安卓程序默认横屏+全屏

我的qt版本是5.14.1,网上查到的方法是,把编译出的build文件夹中的AndroidManifest.xml文件复制出来然后修改,然后把修改后的xml文件加入pro文件,语法为ANDROID_PACKAGE_SOURCE_DIR $$PWD/AndroidManifest.xml(具体&am…

喝酒中的酒文化

最近想感受一下不同酒的区别,所以搞了一些,国窖1573应该过两天就到了。 发现了一些比较好玩的事情。 一是要区别的话,确实得对比,对比起来还是相对比较明显的。 清香、浓香、酱香区别是挺大的。同一款酒低端和高端也确实有区别。…

数据分析为何要学统计学(10)——如何进行比率检验

比率检验是通过样本推测某种事件的总体占比水平。要求事件仅有互斥的两种情况,即,概率分别为p与1-p。 比率检验分单样本和双样本两种情况,以下我们分别介绍。 1. 单样本比率检验 形如这样的问题:“小学生近视比例日益提高&#…

[Android] ubuntu虚拟机上搭建 Waydroid 环境

1.安装虚拟机 略 2.安装waydroid Ubuntu/Debian and derivatives For Droidian and Ubuntu Touch, skip directly to the last step Install pre-requisites sudo apt install curl ca-certificates -y Add the official repository curl https://repo.waydro.id | sudo…

计算机网络:数据链路层(广域网、PPP协议、HDLC协议)

今天又学会了一个知识,加油! 目录 一、广域网 二、PPP协议 1、PPP协议应满足的要求 2、PPP协议无需满足的要求 3、PPP协议的三个组成部分 4、PPP协议的状态图 5、PPP协议的帧格式 三、HDLC协议 1、HDLC的站(主站、从站、复合站&…

87 GB 模型种子,GPT-4 缩小版,超越ChatGPT3.5,多平台在线体验

瞬间爆火的Mixtral 8x7B 大家好,我是老章 最近风头最盛的大模型当属Mistral AI 发布的Mixtral 8x7B了,火爆程度压过Google的Gemini。 缘起是MistralAI二话不说,直接在其推特账号上甩出了一个87GB的种子 随后Mixtral公布了模型的一些细节&am…

jmeter判断’响应断言‘两个变量对象是否相等

1、首先需要设置变量,json、正则、csv文件等变量 2、然后在响应断言中 ①JMeter Variable Name to use —— 输入一个变量,变量名即可 ② 模式匹配规则 ——相等 ③测试模式 ——输入引用的变量命${变量名} (注意这里是需要添加一个测试模式…

通话状态监听-Android13

通话状态监听-Android13 1、Android Telephony 模块结构2、监听和广播获取通话状态2.1 注册2.2 通话状态通知2.3 通话状态 3、通知状态流程* 关键日志 frameworks/base/core/java/android/telephony/PhoneStateListener.java 1、Android Telephony 模块结构 Android Telephony…

Codeforces Round 915 (Div. 2) A-F(补题补写法)

A. Constructive Problems(签到) 题解 输出max(x,y) t int(input()) for _ in range(t):u, v map(int,input().split())print(max(u,v)) B. Begginers Zelda(统计树的叶子) 题解 输出叶子个数除以2上取整 // Problem: B…

第15章 《乐趣》Page355~375 代码简化版

运行效果&#xff1a;全屏了 简化之后的代码如下&#xff1a; //main.cpp #include <iostream> #include <SDL2/SDL.h> #include "sdl_initiator.hpp" #include "sdl_error.hpp" #include "sdl_window.hpp" #include "sdl_sur…

DMA传输中的中断处理在STM32中的应用

DMA&#xff08;Direct Memory Access&#xff09;是一种在数字系统中进行数据传输的技术&#xff0c;它可以在不依赖CPU的情况下直接从内存中读取或写入数据。在STM32微控制器中&#xff0c;DMA控制器可以与外设进行数据传输&#xff0c;减轻了CPU的负担&#xff0c;提高了数据…

什么同源策略?

同源 同源指的是URL有相同的协议、主机名和端口号。 同源策略 同源策略指的是浏览器提供的安全功能&#xff0c;非同源的RUL之间不能进行资源交互 跨域 两个非同源之间要进行资源交互就是跨域。 浏览器对跨域请求的拦截 浏览器是允许跨域请求的&#xff0c;但是请求返回…

C语言学习day09:运算符优先级

运算符优先级&#xff1a; //& 假如设一个int a; 给a一个变量&#xff1b; &a取a对应的地址 优先级运算符名称或含义使用形式结合方向说明1[1,2,3,4]数组下标数组名[常量表达形式]左到右()圆括号(表达式)/函数名(形参).成员选择(对象)对象.成员名->成员选择(指…

【Linux】模拟实现shell命令行解释器

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;优惠多多。&#xff08;联系我有折扣哦&#xff09; 文章目录 1. 主要思路2. 流程图3. 实现过程3.1 初步实现3.2 当前路径3.3 内建命令/外部命令3.4…