首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么listeners数组长度是3而不是最后一个console.log中的2?

listeners数组长度是3而不是2的原因是因为在代码中,我们先将一个匿名函数作为事件监听器添加到listeners数组中,然后又将同一个匿名函数作为事件监听器添加到listeners数组中。这样做的结果是,listeners数组中存在两个相同的匿名函数。

在JavaScript中,当我们将一个函数作为事件监听器添加到数组中时,实际上是将该函数的引用添加到数组中。因此,尽管两个匿名函数的函数体是相同的,但它们是两个不同的函数对象。

所以,当我们在最后一个console.log中打印listeners数组的长度时,它的长度是3,因为数组中存在两个相同的匿名函数。

相关搜索:为什么这个程序返回的是最后一个单词而不是最长的单词?为什么只有数组中的最后一个组件是动画?如何在3d数组的每个2d数组中添加(而不是追加)一个2d数组?为什么只显示最后一个元素而不是JavaScript中的所有元素为什么KMeans是一个类,而不是sklearn中定义的函数?为什么在matlab中sin(pi)不是精确的,而sin(pi/2)是精确的?为什么v2是未定义的,但是数组中的最后一个元素有一个值?为什么在这个列表理解中调用np.array()会产生3d数组而不是2d数组?如何解决ValueError:期望的2D数组,得到的是标量数组而不是python中的错误?为什么回调是一个数字而不是React Scheduler中的函数?在第一行中,解释为什么'k‘打印的是'1’而不是'2'?为什么关联数组中的最后一个元素(表的索引)不是由打印的?为什么我得到的是一个TypeError而不是一个函数。在数组对象上调用forEach在Elixir中,为什么Kernel.put_ In /3是在Kernel模块而不是Map模块中定义的?为什么在数组的这种线性搜索的while循环条件中,!found而不是found是必需的?为什么我的Vector2:new(ax,ay)函数获取的是一个表,而不是一个num值?为什么在这个类中,循环返回的索引是0,而不是0,1,2,3...etc?为什么在createSlice中使用'push‘会将'3’添加到我的状态中,而不是追加一个数组?为什么,当提升到数组的级别并将其除以另一个数组时,获得的是数字,而不是一个数组?在Python中,为什么我的for循环只排除特定数字之前的数字,而该数字是数组中的最后一个数字?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2022-08-24:给定一个长度3N数组,其中最多含有0、1、2三种值, 你可以把任何一个连续区间上数组,全变成0、1、2一种, 目的让0、1、2

2022-08-24:给定一个长度3N数组,其中最多含有0、1、2三种值,你可以把任何一个连续区间上数组,全变成0、1、2一种,目的让0、1、2三种数字个数都是N。返回最小变化次数。...统计0,1,2扣去N/3个数之和。比如1,1,1,1有3个,多了两个;0和2都是0个,不统计;所以结果2。时间复杂度:O(N)。代码用rust编写。...{ return time; } else { if time == 2 { return 3; } let mut...// 只有一种数个数小于m return if once(arr, &mut cnt, m) { 1 } else { 2 }; }}// 只有一种数少于N/3fn once...个// 1 -> 10个// 2 -> 10个// ==========// 0 -> 7个// 2 -> 12个 1 -> 11个// 多2// 少数 0fn modify(arr: &mut

77010

美团前端一面高频面试题

1、Map键值对,Set值得集合,当然键和值可以是任何得值2、Map可以通过get方法获取值,set不能因为它只有值3、都能通过迭代器进行for...of 遍历4、Set唯一可以做数组去重...GET长度值 = URL(2083)- (你Domain+Path)-22get请求?...{ console.log(args)}mutiple(1, 2, 3, 4) // [1, 2, 3, 4]这就是 … rest运算符又一层威力了,它可以把函数多个入参收敛进一个数组里。...什么物理像素,逻辑像素和像素密度,为什么在移动端开发时需要用到@3x, @2x这种图片?..., 不能修改对象 return res;}apply描述:与 call 类似,唯一区别就是 call 传入不固定个数参数, apply 传入一个参数数组或类数组

64230
  • 前端高频面试题(六)(附答案)

    1、意外全局变量:由于使用未声明变量,意外创建了一个全局变量,而使这个变量一直留在内存无法被回收2、被遗忘计时器或回调函数:设置了 setInterval 定时器,忘记取消它,如果循环函数有对外部变量引用的话...但是它有一个很大问题就是创建出来对象无法和某个类型联系起来,它只是简单封装了复用代码,没有建立起对象和类型间关系。(2)第二种构造函数模式。...为尽快完成首次渲染,我们需要最大限度减小以下三种可变因素:(1)关键资源数量。(2)关键路径长度。(3)关键字节数量。关键资源可能阻止网页首次渲染资源。...冒泡排序--时间复杂度 n^2题目描述:实现一个冒泡排序实现代码如下:function bubbleSort(arr) { // 缓存数组长度 const len = arr.length; //...return arr;}// console.log(bubbleSort([3, 6, 2, 4, 1]));CSS 优化和提高性能方法有哪些?

    47330

    2023秋招前端面试必会面试题_2023-03-15

    方法2:当页面出现业务定义错误码时,则认为白屏。比如“网络或服务异常”。 方法3:当页面出现业务定义特征值时,则认为白屏。比如“数据加载”。...总的来说,render 阶段在执行过程中允许被打断, commit 阶段则总是同步执行为什么这样设计呢?...偏偏在面试场景下,10 个人里面有 9 个都走这条歧路,最后9个人里面自然没有一个能自圆其说,实在让人惋惜。为什么需要浏览器缓存?...数组扁平化题目描述:实现一个方法使多维数组变成一维数组最常见递归版本如下:function flatter(arr) { if (!...[...pre, ...flatter(cur)] : [...pre, cur], [] );}// console.log(flatter([1, 2, [1, [2, 3, [4, 5,

    58620

    前端高频面试题(四)(附答案)

    说一下data为什么一个函数不是一个对象?JavaScript对象是引用类型数据,当多个实例引用同一个对象时,只要一个实例对这个对象进行操作,其他实例数据也会发生变化。...除此之外,PNG-8还支持透明度调节,GIF并不支持。除非需要动画支持,否则没有理由使用GIF不是PNG-8。(5)PNG-24无损、使用直接色点阵图。...优点:1.体验好,不刷新,减少 请求  数据ajax异步获取 页面流程;2.前后端分离3.减轻服务端压力4.共用一套后端程序代码,适配多端缺点:1.首屏加载过慢;2.SEO 不利于搜索引擎抓取为什么函数...arguments 参数数组不是数组?...,b赋值为3,b此时一个全局变量,而将3赋值给a,a一个局部变量,所以最后打印时候,a仍旧undefined。

    60940

    2021前端面试必备题+答案

    其次 VDOM 和真实 DOM 区别和优化: 虚拟 DOM 不会立马进行排版与重绘操作 虚拟 DOM 进行频繁修改,然后一次性比较并修改真实 DOM 需要改部分,最后在真实 DOM 中进行排版与重绘...方法2:当页面出现业务定义错误码时,则认为白屏。比如“网络或服务异常”。 方法3:当页面出现业务定义特征值时,则认为白屏。比如“数据加载”。...实例,该方法接受一个由Promise对象组成数组作为参数(Promise.all()方法参数可以不是数组,但必须具有Iterator接口,且返回每个成员都是Promise实例),注意参数只要有一个实例触发...需要注意,立即resolve() Promise 对象,在本轮“事件循环”(event loop)结束时执行,不是在下一轮“事件循环”开始时。...if (Array.isArray(target) && isValidArrayIndex(key)) { // 修改数组长度, 避免索引>数组长度导致splcie()执行有误

    80530

    京东前端二面必会vue面试题(持续更新)_2023-02-24

    访问根组件属性或方法,根组件,不是父组件。...$root 访问根组件属性或方法 作用:访问根组件属性或方法 注意:根组件,不是父组件。...// 修改数组长度, 避免索引>数组长度导致splcie()执行有误 target.length = Math.max(target.length, key) // 利用数组splice...,sth => value; (2)作用在组件上 在自定义组件,v-model 默认会利用名为 value prop和名为 input 事件 本质一个父子组件通信语法糖,通过prop和$....AST元素节点总共三种类型:type为1表示普通元素、2为表达式、3为纯文本 (2)对静态节点做优化 optimize(ast,options) 这个过程主要分析出哪些静态节点,给其打一个标记,为后续更新渲染可以直接跳过静态节点做优化

    83130

    2021-07-27:给定一个数组arr,长度为N,arr值只有1,23三种。arr == 1,代表汉诺塔问题中,从

    2021-07-27:给定一个数组arr,长度为N,arr值只有1,23三种。...arr[i] == 1,代表汉诺塔问题中,从上往下第i个圆盘目前在左;arr[i] == 2,代表汉诺塔问题中,从上往下第i个圆盘目前在;arr[i] == 3,代表汉诺塔问题中,从上往下第i个圆盘目前在右...那么arr整体就代表汉诺塔游戏过程一个状况。如果这个状况不是汉诺塔最优解运动过程状况,返回-1。如果这个状况汉诺塔最优解运动过程状况,返回它是第几个状况。...福大大 答案2021-07-27: 1-7汉诺塔问题。 1. 1-6左→2. 7左→右。 3. 1-6→右。 单决策递归。 k层汉诺塔问题,[2k次方-1]步。 时间复杂度:O(N)。...to 另一个啥?

    93230

    高频js手写题之实现数组扁平化、深拷贝、总线模式_2023-02-23

    三道js手写题思路和代码实现 数组扁平化 演示效果 将[1, 1, 2, [1, 2]] 变成 1, 1, 2, 1, 2 第一种: 直接使用.flat console.log([1, [1,2],[...1,[2]]].flat(3)); 可以将多维数组,降维,传参数是多少就降多少维 一般直接传参数为 Infinity(简单粗暴) 第二种: 递归方法方法 + 借用数组API完成 (1) function...(即其自身定义属性,不是其原型链上枚举属性)将为新创建对象添加指定属性值和对应属性描述符。...,其中弱引用对象,值可以是任意。...,必须一个函数, // 另外判断是否object这块递归去找对象是否还存在函数,如果不是函数, // 自定义事件没有回调肯定是不行 return isValidListener

    42410

    源码共读-Redux

    2: subscribe: 监听事件,实际上就是把事件添加到事件数组,并返回移除事件函数。 3: getState:获取当前状态。 4: replaceReducer:替换reducer。...最新源码与我们实现理念大致相同,只是多了类型校验,另外事件采用双map形式(防止dispatch调用subscribe/unsubscribe)不是我们简单数组最后在事件触发时会使用变量标记...console.log('next state', store.getState()) // 更新后状态 return result } 中间件一个嵌套三层函数,每一层都有一个参数,参数分别是...dispatch处理过函数,其他都是与store一致,也就是说中间件作用实际上强化dispatch函数。...middlewareAPI实际上就是中间件第一层函数参数store,这里需要注意dispatch调用时候,下面的代码已经走完了,所以里面的dispatch函数加强后dispatch不是上面定义抛出异常函数

    9510

    高频js手写题之实现数组扁平化、深拷贝、总线模式

    ]].flat(3));可以将多维数组,降维,传参数是多少就降多少维一般直接传参数为 Infinity(简单粗暴) 第二种: 递归方法方法 + 借用数组API完成(1)function flattten...使用以weakMap进行巧妙处理使用Reflect.ownKeys返回一个由目标对象自身属性键组成数组,对于剩下拷贝类型为object和function但不是null进行递归操作,对于除了上述类型外直接进行...(即其自身定义属性,不是其原型链上枚举属性)将为新创建对象添加指定属性值和对应属性描述符。...,其中弱引用对象,值可以是任意。...,必须一个函数, // 另外判断是否object这块递归去找对象是否还存在函数,如果不是函数, // 自定义事件没有回调肯定是不行 return isValidListener

    37240

    那些高级前端如何回答面试题_2023-02-28

    DOM2 级事件模型,在该事件模型,一次事件共有三个过程,第一个过程事件捕获阶段。...: 也是在所有同源窗口中都是共享.也就是说只要浏览器不关闭,数据仍然存在 数组扁平化 数组扁平化就是将 [1, [2, 3]] 这种多层数组拍平成一层 1, 2, 3。..., 不能修改对象 return res; } apply 描述:与 call 类似,唯一区别就是 call 传入不固定个数参数, apply 传入一个参数数组或类数组。...第一种情况由于使用未声明变量,意外创建了一个全局变量,而使这个变量一直留在内存无法被回收。...Static 关键字有了解嘛 为这个类函数对象直接添加方法,不是加在这个函数对象原型对象上 如果一个构造函数,bind了一个对象,用这个构造函数创建出实例会继承这个对象属性吗?为什么

    70410

    腾讯前端面试题

    端口不是一个URL必须部分,如果省略端口部分,将采用默认端口(HTTP协议默认端口80,HTTPS协议默认端口443);虚拟目录部分:从域名后一个“/”开始到最后一个“/”为止,虚拟目录部分...虚拟目录也不是一个URL必须部分。本例虚拟目录“/news/”;文件名部分:从域名后最后一个“/”开始到“?”为止,文件名部分,如果没有“?”...,则是从域名后最后一个“/”开始到“#”为止,文件部分,如果没有“?”和“#”,那么从域名后最后一个“/”开始到结束,都是文件名部分。本例文件名“index.asp”。...文件名部分也不是一个URL必须部分,如果省略该部分,则使用默认文件名;锚部分:从“#”开始到最后,都是锚部分。本例锚部分“name”。锚部分也不是一个URL必须部分;参数部分:从“?”...margin 值来实现不是通过父元素 padding 来实现

    1K22

    前端手写面试题合集

    支持异步 action// 如果 action 个函数,就调用这个函数// 如果 action 不是函数,就传给下一个中间件// 发现 action 函数就调用const thunk = ({...若是输入目标长度小于字符串原本长度则返回字符串本身'xxx'.padStart(2, 's') // 'xxx'// 2. 第二个参数默认值为 " ",长度为1// 3....此参数可能个不确定长度字符串,若是要填充内容达到了目标长度,则将不要部分截取'xxx'.padStart(5, 'sss') // ssxxx// 4....数组去重实现基本原理如下:① 初始化一个数组② 将需要去重处理数组第1项在初始化数组查找,如果找不到(空数组中肯定找不到),就将该项添加到初始化数组③ 将需要去重处理数组2项在初始化数组查找...(300,"3"); addTask(400,"4"); 输出顺序2 3 1 4 整个完整执行流程:一开始1、2两个任务开始执行500ms时,2任务执行完毕,输出2,任务3开始执行800ms时,

    31220

    Nodejs学习笔记(二)--- 事件模块

    注册了一个监听后,我用emiiter.removeListener移除some_events监听,随后再调用emitter.emit去触发,最后发现不是按我想像在进行!...为什么呢? 我理所当然认为emiiter.removeListener第二个参数个回调函数,API还是要认真看清楚啊!!! 下面再看个成功场景~~~ ?...('some_events', 'Wilson', 'Zhong'); 我用示例写法,给some_events添加了三个监听,又移除了第一个和第三个监听,最后再用emitter.emit触发some_events...emitter.removeAllListeners([event]) emitter.removeListener用过了,但一个事件可以有多个监听,需要全部移除时,一个个移除明显不是愉快做法,不符合偷懒天性...("其它监听事件,参数foo=" + foo + ",bar="+bar ); }); /* EventEmitter.listeners(event) //返回指定事件监听数组

    1.2K80

    2023前端一面vue面试题合集_2023-02-27

    EventBus: 通过EventBus进行信息发布与订阅 vuex: 全局数据管理库,可以通过vuex管理全局数据流 $attrs/$listeners: Vue2.4加入$attrs/$listeners...虚拟DOM本质上JavaScript对象,对真实DOM抽象 状态变更时,记录新树和旧树差异 最后把差异更新到真正dom 说说Vue生命周期吧 什么时候被调用?...这个可以是这个节点唯一标识,告诉 diff 算法,在更改前后它们一个DOM节点 扩展 v-for 为什么要有<code...并且可以多人协作,每个人写不同组件,最后像撘积木一样把它构成一个页面 Vue3.0 和 2.0 响应式原理区别 Vue3.x 改用 Proxy 替代 Object.defineProperty。...(key)) { // 修改数组长度, 避免索引>数组长度导致splcie()执行有误 target.length = Math.max(target.length, key) // 利用数组splice

    74240

    Redux 原理与实现

    数组一个监听函数 listeners.forEach(listener => listener()); return action; // 返回 action } subscribe...这个函数主要是往 listeners 数组中放入监听函数,参数就是一个监听函数。...middlewareAPI 传递给中间件函数参数,每个中间件在书写时都应该有一个参数,里面有 getState 方法和 dispatch 包装函数。 chain 数组里面就是中间件函数。...在 redux 也是如此,并且中间件有顺序,chain 数组最左侧中间件会先调用,然后在内部调用 next 方法,表示执行下一个中间件。...这也就是为什么 redux-logger 中间件为什么放在数组最右边,最左边中间件会先执行,不那样做可能就无法打印出准确 action 信息。

    4.5K30

    vue面试经常会问那些题

    当 cache 内原有组件被使用时会将该组件 key 从 keys 数组删除,然后 push 到 keys数组最后,以便清除最不常用组件。...max 所设置范围,超过,那么削减未使用时间最长一个组件 key最后将这个组件 keepAlive 设置为 true(3)keep-alive 本身创建过程和 patch 过程缓存渲染时候...得到new Vue()实例,在这实例上再拿$parent得到undefined,而在最底层子组件拿$children个空数组$children 数组$parent个对象(5)$...$emit("test2"); // 触发APP.vuetest2方法 },};在上述代码:C组件能直接触发test原因在于 B组件调用C组件时 使用 v-on 绑定了$listeners...这些被标记节点(静态节点)我们就可以跳过对它们比对,对运行时模板起到很大优化作用。编译最后一步将优化后AST树转换为可执行代码。为什么vue组件data必须一个函数?

    1K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券