JS面试题二

1、怎么找出数组中五个最大的值

  方法其实有挺多种,比如用两个for循环嵌套;Array.sort();递归查找;但是它的时间复杂度最少也为O(log n^2)

  可以使用一个for循环嵌套,里面使用Math.max(), 由于这个方法里面是一个一个传参,可以用拓展运算符...展开数组传入,这样时间复杂度就只有O(log n)

2、说一下JS中的堆与栈,null为什么存在栈,它不是空对象吗

  堆和栈都是用来存储变量数据的,在JavaScript中变量分为两种,一种是基本类型(String,Number、Boolean、null、undefined、symbol(ES6)),一种是引用类型(Object、Array、Function)  

  JS中的基本数据类型(string, boolean, number, null, undefined)保存在栈空间中,因为他是值类型,空间是固定的;

  JS中的引用数据类型保存在堆空间中,因为它的大小不固定,长度不固定所以放在堆中,而栈内存中则存放地址,地址指向堆内存中的对象,是按引用访问的。所以当访问引用数据时先访问栈空间中的地址,再通过地址指向去访问对应的堆空间。

posted @ 2022-09-01 10:20  啊呀阿鱼呀  阅读(19)  评论(0编辑  收藏  举报