前端面经面经每日一题day04

​​​​​​​互联网大厂面试每日一题 -- 大厂面试每日一题

上面这个网址是我的题目的来源

不知不觉都已经第四天了,现在因为有了这个任务,我能够自己每天坚持去学习,然后输出。希望我分享的能够让看到的人收获,如果有什么问题可以发在评论区。

关于 JSON,以下代码输出什么

JSON.stringify 就是把JavaScript对象转换成JSON字符串,这个过程就是序列化。

它会忽视undefined和function(){}

对于函数get a(){|,本质是,就是变量a的get方法,如果没有return就是返回值是undefined,所以会忽视,如果有返回值,就是会赋值给变量a

补充:undefined就是初始化后未赋值,比如let a就是undefined,null就是给他赋值了null

复制代码
let obj={
    a:3,
    b:[1,2,3],
    c:{m:3},
    d:null,
    e:undefined,
    f:function(){},
    get e(){return 44},
    get g(){}
}
console.log(JSON.stringify(obj))
输出:{"a":3,"b":[1,2,3],"c":{"m":3},"d":null,"e":44}

JSON.parse 就是把JSON字符串转化为JavaScript对象。如果不是JSON字符串就会抛出异常。

如何把类数组转化为数组

类数组

特点:类数组有length属性,但是不具备数组原型链上的方法(比如push,pop)。

常见的类数组对象:arguments对象:传递给函数的所有参数。DOM方法返回的结果,document.querySelectorAll

转化为数组的方法

Array.from

这是一个ES6引入的静态对象,用于从类数组或可迭代对象中创建一个新数组实例。

复制代码
let obj={0:'1',1:'2',length:2}
let arobj=Array.from(obj)
console.log(arobj)

扩展运算符 ...

ES6 ,不适用于所有的类数组,但只能作用于可迭代对象iterable 比如DOM方法的结果,但是对于{length:3}就不可以,会出错。

复制代码
let all=document.querySelectorAll('li')
let allarr=[...all]
console.log(allarr)

Array API

ES5中可以借用Array API通过,call/apply改变this来完成转化。

Array.prototype.slice.call(arrayLike) 这个调用数组原型身上的方法,slice是数组一个方法,提取数组的部分元素,这里我们就提取数组的全部元素,call里面第一个就是需要转化的类数组,第二个就是slice方法切割的开头,第三个元素就是slice方法切割的结束。

复制代码
let obj={0:'1',1:'2',length:2}
let arobj=Array.prototype.slice.call(obj)
//或者let arobj=Array.prototype.slice.apply(obj)
console.log(arobj)

以上方法都可以,但是我们现在看一下稀疏数组,就是数组中元素为空,控制台显示如下:(2) 空属性 × 2

那么就是说,上述的方法不一定适用于类数组,最后总结一下,比较稳妥的类数组转化为数组的方法如下

Array.from(arrayLike)

相关推荐
Mh3 小时前
别再只会 `find` 了:Map 在前端业务里的真实用法
前端·javascript
陈随易3 小时前
FFmpeg 9.0 发布,代号 Lei,音视频处理再升级
前端·后端·程序员
爱丶狸4 小时前
Grafana_Zabbix_ImageRenderer_部署与前端操作手册
linux·前端·zabbix·grafana·kylin
隐积4 小时前
3.1.7.Qt容器大家族(3):QVariant——万能盒子
开发语言·qt
用户059540174467 小时前
把AI对话记忆存储测试从手工改成Playwright+pytest,覆盖率从20%提到96%,回归时间缩短90%
前端·css
kyriewen7 小时前
别再这样写TypeScript了——Code Review中最常见的8个反模式
前端·javascript·typescript
名字还没想好☜7 小时前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js
午安~婉7 小时前
GitHub Token/ GitHub Stats统计显示图异常
前端·github·vercel·github token
码云之上8 小时前
AI Agent 工程化总览篇:从 Prompt 到 Harness
前端·人工智能
2501_926978338 小时前
以说明书 DNA 为模板——完整 AGI 的结构图景
前端·人工智能·经验分享·笔记·ai写作