最新公告
  • 本站一直秉承服务宗旨:履行“站长”责任,销售只是起点 服务永无止境!”的经营理念立即加入
  • 牛客前端刷题(六)—— JS基础

    还在担心面试不通过吗?给大家推荐一个超级好用的刷面*神器:牛客网,里面涵盖了各个领域的面*库,还有大厂真题哦!

    赶快悄悄的努力起来吧,不苒在这里衷心祝愿各位大佬都能顺利通过面试。
    面试专栏分享,感觉有用的小伙伴可以点个订阅,不定时更新相关面*:面试专栏
    牛客前端刷题(六)—— JS基础插图

    1、let const var 相关

    • var ——ES5 变量声明方式

       在变量未赋值时,变量undefined(为使用声明变量时也为undefined) 作用域:var的作用域为方法作用域;只要在方法内定义了,整个方法内的定义变量后的代码都可以使用 
    • let——ES6变量声明方式

       在变量为声明前直接使用会报错 作用域——let为块作用域——通常let比var 范围要小 let禁止重复声明变量,否则会报错;var可以重复声明 
    • const——ES6变量声明方式
      1. const为常量声明方式;声明变量时必须初始化,在后面出现的代码中不能再修改该常量的值
      2. const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动

    2、js数据类型,区别

    • 基本数据类型:
      Number,String,Boolean,null,undefined,symbol,bigint(后两个为ES6新增)
    • 引用数据类型:
      object,functiоn(proto Function.prototype)
      object:普通对象,数组对象,正则对象,日期对象,Math数学函数对象。
    • 两种数据存储方式:
      • 基本数据类型是直接存储在栈中的简单数据段,占据空间小、大小固定,属于被频繁使用的数据。栈是存储基 本类型值和执行代码的空间。
      • 引用数据类型是存储在堆内存中,占据空间大、大小不固定。引用数据类型在栈中存储了指针,该指针指向堆 中该实体的起始地址,当解释器寻找引用值时,会检索其在栈中的地址,取得地址后从堆中获得实体。
    • 两种数据类型的区别:
      1. 堆比栈空间大,栈比堆运行速度快。
      2. 堆内存是无序存储,可以根据引用直接获取。
      3. 基础数据类型比较稳定,而且相对来说占用的内存小。
      4. 引用数据类型大小是动态的,而且是无限的。

    3、Object.assign的理解

    作用: Object.assign可以实现对象的合并
    语法:

    Object.assign(target, ...sources) 

    解析:

    4、constructor的理解

    参考答案:

    创建的每个函数都有一个prototype(原型)对象,这个属性是一个指针,指向一个对象。在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性是一个指向prototype属性所在函数的指针。当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(继承自构造函数的prototype),指向构造函数的原型对象。注意当将构造函数的prototype设置为等于一个以对象字面量形式创建的新对象时,constructor属性不再指向该构造函数。

    5、map 和 forEach 的区别

    • 相同点:

      1. 都是循环遍历数组中的每一项
      2. 每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)
      3. 匿名函数中的this都是指向window
      4. 只能遍历数组
    • 不同点:

      • map()会分配内存空间存储新数组并返回,forEach()不会返回数据
      • forEach()允许callback更改原始数组的元素。map()返回新的数组。

    6、 for of 可以遍历哪些对象

    for...of:它是es6新增的一个遍历方法,但只限于迭代器(iterator), 所以普通的对象用for..of遍历是会报错的。

    可迭代的对象:包括Array, Map, Set, String, TypedArray, arguments对象等等

    7、变量提升

    概念: 作用域就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域大的用处就是隔离变量,不同作用域下同名变量不会有冲突。

    ES6 之前 JavaScript 没有块级作用域,只有全局作用域和函数作用域。ES6 的到来,为我们提供了‘块级作用域’,可通过新增命令 let 和 const 来体现。

    var ——ES5 变量声明方式

    • 在变量未赋值时,变量undefined(为使用声明变量时也为undefined)
    • 作用域——var的作用域为方法作用域;只要在方法内定义了,整个方法内的定义变量后的代码都可以使用

    let——ES6变量声明方式

    • 在变量为声明前直接使用会报错
    • 作用域——let为块作用域——通常 let 比 var 范围要小
    • let禁止重复声明变量,否则会报错;var可以重复声明

    const——ES6变量声明方式

    • const为常量声明方式;声明变量时必须初始化,在后面出现的代码中不能再修改该常量的值
    • const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动

    8、 null 和 undefined 的区别,如何让一个属性变为null

    undefined 表示一个变量自然的、原始的状态值,而 null 则表示一个变量被人为的设置为空对象,而不是原始状态。所以,在实际使用过程中,为了保证变量所代表的语义,不要对一个变量显式的赋值 undefined,当需要释放一个对象时,直接赋值为 null 即可。

    9、 介绍下 Set、Map、WeakSet 和 WeakMap 的区别?

    Set

    • 成员不能重复;
    • 只有键值,没有键名,有点类似数组;
    • 可以遍历,方法有add、delete、has

    WeakSet

    • 成员都是对象(引用);
    • 成员都是弱引用,随时可以消失(不计入*回收机制)。可以用来保存 DOM 节点,不容易造成内存泄露;
    • 不能遍历,方法有add、delete、has;

    Map

    • 本质上是键值对的集合,类似集合;
    • 可以遍历,方法很多,可以跟各种数据格式转换

    WeakMap

    • 只接收对象为键名(null 除外),不接受其他类型的值作为键名;
    • 键名指向的对象,不计入*回收机制;
    • 不能遍历,方法同get、set、has、delete;

    10、 简单说说 js 中有哪几种内存泄露的情况

    JavaScript相关面*就更新到这里啦,相关 Web前端面* 可以订阅专栏哦?
    专栏地址:《面试必看》
    面试刷题神器:牛客网

    名 言 警 句 : 说 能 做 的 , 做 说 过 的 ! \textcolor{red} {名言警句:说能做的,做说过的!} !

    原 创 不 易 , 还 希 望 各 位 大 佬 支 持 一 下 \textcolor{blue}{原创不易,还希望各位大佬支持一下}

    ? 点 赞 , 你 的 认 可 是 我 创 作 的 动 力 ! \textcolor{green}{点赞,你的认可是我创作的动力!}

    ⭐️ 收 藏 , 你 的 青 睐 是 我 努 力 的 方 向 ! \textcolor{green}{收藏,你的青睐是我努力的方向!}

    ✏️ 评 论 , 你 的 意 见 是 我 进 步 的 财 富 ! \textcolor{green}{评论,你的意见是我进步的财富!}

    原文链接:https://blog.csdn.net/qq_49002903/article/details/127080350

    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如有侵权麻烦联系邮箱2697381891@qq.com删除文章!

    源码库 » 牛客前端刷题(六)—— JS基础
    • 3029会员总数(位)
    • 37685资源总数(个)
    • 586本周发布(个)
    • 102 今日发布(个)
    • 1171稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情