【精选】前端JS面试题35个

这篇具有很好参考价值的文章主要介绍了【精选】前端JS面试题35个。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.问:什么是匿名函数?作用是什么?

          答:没有名字的函数就是匿名函数,作用有三,把函数当作变量赋值,把函数当作参数(回调函数),把函数当作另一个函数的返回值(闭包)

        2.什么是回调函数?为什么需要回调函数?

          答:一个被当作函数参数的函数,在不打开第三方函数的情况下实现完整功能,就需要回调函数

        3.什么是立即执行函数?为什么需要立即执行函数?

          答:此概念只针对匿名函数,即函数在定义阶段就可以直接运行,当我们希望一个函数只执行一次,执行完之后立马销毁,就需要立即执行函数了

        4.立即执行函数的写法

          (function (){}())

          (function (){})()

        5.什么是作用域链?

          答:父子函数嵌套时,不同变量在不同作用域的使用权限就是作用域链,子函数可以访问父函数的所有变量,父函数无法访问子函数的变量

        6.什么是闭包?为什么需要闭包?

          答:函数嵌套函数就是闭包,被嵌套的函数叫闭包函数,全局变量会破坏函数的独立性,既要实现功能又不能破坏函数独立性,就需要闭包

        7.简述闭包的写法

          父函数嵌套子函数,在父函数内部声明局部变量,子函数操作该局部变量并return,将子函数作为父函数的返回值,在全局声明变量接收该返回值,就形成了闭包

        8.闭包的作用是什么?

          函数外部可以返回函数内部的变量,实现属性私有化和模块化开发

        9.闭包的缺陷是什么?

          闭包会延长局部变量的生命周期,打破垃圾回收机制,大量使用闭包会导致内存泄漏

        10.什么是柯里化函数?柯里化的核心思想是什么?

          答:一个函数,只有一个参数,并且返回值是一个函数的函数。对函数参数的自由处理,让函数更加灵活,降低了通用性,提升了特定性

        11.什么是this?作用是什么?分几种情况?

          答:this是函数对象的内置对象,其作用域在函数内部。

            this出现在事件体内,指向触发该事件的元素本身

            this出现在普通函数内(除了事件体和构造函数),代表调用该方法的元素本身

            this出现在构造函数内,指向new出来的空间

            this出现在箭头函数内,指向其父级的前缀

        12.什么是类?什么是对象?

          答:类是将具有相同属性和行为的对象归纳为一个类型,是一个模板,抽象不存在的;对象是类的实例化,携带了类的属性和方法,真实存在且唯一

        13.什么是原型对象?作用是啥?

          答:原型对象prototype是对象的一个属性,可以理解成一个存储空间,类的对象将具有相同内容的属性和方法存储到这个空间里,供其实例化对象访问和使用,大大减少代码量,降低内存消耗

        14.什么是arguments?作用是什么?

          答:实参列表,是函数对象的内置对象,作用域在函数内部,arguments的返回值是一个伪数组,只能访问元素和长度,其他API无法使用。作用有二,可以设置不定参函数,arguments.callee代表函数本身,常用于递归函数

        15.为什么子类的实例对象可以访问到子类的所有属性和方法,以及父类的所有属性和方法?

          答:所有实例对象在创建的过程中自带__proto__属性,指向类的原型对象prototype,所以可以访问类的原型上的属性和方法,类在构造对象的时候new出了空间,类的实例对象可以直接访问自己new出空间的属性和方法。

             子类的原型对象指向父类的实例对象,子类的实例对象可以访问父类构造对象时new出的属性和方法,子类的实例对象通过父类实例对象的__proto__可以访问父类原型上的的属性和方法

        16.apply/call/bind的区别是什么?

          答:三者都是函数对象的内置方法,用来修改this指向。apply和call用来修饰有名函数,bind用来修饰匿名函数。apply的第二个参数必须是数组,call和bind的参数用逗号隔开。apply和call都是直接调用方法,bind会产生新的函数对象

        17.面向对象的编程思想包括哪些?

          答:封装、继承、多态

        18.什么是封装的思想?

          答:将若干个属性和方法封装成一个整体变成一个对象,通过对象调用这些属性和方法

        19.什么是继承?

          答:子类吸收父类已有的属性和方法,提升了代码的复用性(ES6类的方法直接绑定在原型对象上)

        18.什么是多态?

          答:在面向对象的过程中,有一种极致的复用性叫多态,降低了类和函数的耦合性,实现了类和函数的解耦

        20.ES5继承都有哪些模式?

          答:三种模式,原型继承、借用构造方法继承(apply和call)、混合继承

        21.混合继承是怎么实现的?

          答:混合继承是原型继承和借用构造方法继承合二为一的继承模式,在混合继承中,原型继承是子类继承父类prototype上的属性和方法,借用构造方法继承是子类继承父类new出空间的属性和方法

        22.什么是原型继承?

          答:通过原型对象实现继承

        23.原型继承的缺陷有哪些?

          答:子类对象构造时,无法初始化父类派生给子类的属性,一旦实现继承关系,继承指向就不能修改,必须先实现继承关系才能为子类添加原型属性和方法

        24.借用构造方法继承的作用和缺陷是什么?

          答:可以实现子类对象构造时,初始化父类派生给子类的属性,缺陷是无法继承父类原型对象上的属性和方法

        25.instanceof是什么?和typeof的异同点是什么?

          答:instanceof是判断引用类型的关键字,返回值是布尔值,如果A对象是B类型的,返回true,反之返回false。二者都是判断数据类型的关键字,typeof只能判断基本类型,无法判断引用类型,若判断引用类型返回Object,instanceof能够判断引用类型,且满足兼容性规则(高版本兼容低版本,低版本不兼容高版本)

        26.内置基本类型和内置引用类型在存储上的区别是什么?

          答:内置基本类型只有一块栈空间,里面存储的是数值,内置引用类型有栈和堆,栈里面存的是堆空间的地址,堆空间里存的是真实的内容

        27.什么是值传递?什么是引用传递?

         答:值传递是将栈里面的数值当作实参传递,单向传递,形参无法改变实参,需要返回值。引用传递是将栈空间里面的地址当作实参传递,形参和实参指向同一地址,形参能够改变实参堆空间的内容,双向传递,无需返回值

        28.简述深浅拷贝

         答:深浅拷贝是针对引用类型的概念,深浅拷贝本质区别是有没有开辟空间,浅拷贝只拷贝地址,不开辟空间,一改全改,深拷贝是既拷贝地址也开辟空间,各改各的

        29.什么是单例类?怎么实现?有什么作用?

          答:一个类只能创建一个对象,就是单例类。当这个类没有对象的时候,就创建一个对象,如果这个类已经有了一个对象,则无法继续创建对象,保持该类的对象永远有且只有一个。可以方便在整个项目之间传递共享数据

        30.简述观察者模式

          答:当发布者发布消息时,所有观察者都可以接收到该消息。代码角度:观察者定义函数,发布者调用函数,传递参数

        31.什么是cookie?

          答:cookie是会话跟踪技术,也是页面之间传递数据的变量。cookie分为会话级cookie和长生命周期的cookie,长生命周期的cookie由服务器生成,由服务器发送到本地磁盘,保存在本地磁盘中,会话级cookie由浏览器生成,保存在浏览器当中,浏览器关闭cookie自动清除。二者的读取是一样的,会话级cookie没有删除的概念,当所有页面关闭后会自动清除,长生命周期的cookie没有直接删除的方法,可以把存储的时间更改为-1或者等存储时间到了自动删除,长生命周期的cookie写的时候需要加expires=标准日期对象

        32.cookie和本地存储的区别有什么?

          答:cookie存储数据的大小是4K,本地存储的数据大小是4-5MB;cookie每次都会把数据发送在HTTP请求当中,浪费性能,本地存储不参与服务器通信;cookie的原生API极少,需要程序员自己封装,本地存储的API等同于cookie封装好的API;会话级cookie等同于sessionStorage,localStorage除非手动删除,否则将一直存储在本地。

        33.什么是Object.defineProperty?

          答:Object.defineProperty是ES5的一个与数据驱动息息相关的函数,能改变Vue修改变量的方式,以前是DOM驱动,现在是数据驱动,可以精准控制每个属性的特点

        34.Object.defineProperty的方法有哪些?

          答:get和set,value,writable(是否可以设置),enumerable(是否可以被枚举),configurable(是否可以被删除)

        35.什么是双向绑定原理?

          答:改数据,DOM元素发生改变;改DOM元素,数据发生改变,用的就是Object.defineProperty()中的get和set方法文章来源地址https://www.toymoban.com/news/detail-653647.html

到了这里,关于【精选】前端JS面试题35个的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web前端框架JS学习之JavaScript类型转换

    vascript有多种数据类型,如字符串、数字、布尔等,可以通过typeof语句来查看变量的数据类型。数据类型转换就是数据类型之间相互转换,比如把数字转成字符串、把布尔值转成字符串、把字符串转成数字等,这在工作也是经常碰到的。 本期我们就给大家说说web前端框架JS学

    2024年02月10日
    浏览(64)
  • 【前端灵魂脚本语言JavaScript⑤】——JS中数组的使用

    🐚 作者: 阿伟 💂 个人主页: Flyme awei 🐋 希望大家多多支持😘一起进步呀! 💬 文章对你有帮助👉关注✨点赞👍收藏📂 第一种: var 数组名 = new Array(); 创建一个空数组 第二种: var arr2 = new Array(10); 创建一个定长为10的数组 第三种 var arr3 = new Array(a,b,c); 创建时直接指定元素值

    2023年04月08日
    浏览(65)
  • 前端基础面试题(HTML,CSS,JS)

    前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库  web前端面试题库 VS java后端面试题库大全 代码结构:  使页面在没有css的情况下,也能够呈现出好的内容结构 有利于SEO:  爬虫根据标签来分配的权重,因此可以和搜索引擎建立良好的沟通,帮助爬虫抓

    2024年02月09日
    浏览(53)
  • 〖大前端 - 基础入门三大核心之JS篇㉓〗- JavaScript 的「数组」

    当前子专栏 基础入门三大核心篇 是免费开放阶段 。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费开放 , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:除了通过订阅\\\"白宝书系列专

    2024年02月04日
    浏览(70)
  • ChatGPT给出的前端面试考点(Vue.js)

    答案 1. Vue.js是什么?它的主要特点是什么? Vue.js是一个渐进式JavaScript框架,用于构建用户界面。它的主要特点包括: 数据绑定:Vue.js使用双向数据绑定,即视图会自动更新以匹配数据的变化,反之亦然。 组件化:通过组件化的方法可以构建可重用的视图组件。 轻量级:

    2024年01月20日
    浏览(48)
  • [前端系列第3弹]JS入门教程:从零开始学习JavaScript

    本文将带领大家,从零开始学习JavaScript,fighting~ 目录 一、JavaScript简介 二、变量和数据类型 三、注释和分号 四、算术运算符 五、表达式和语句 六、代码块和作用域 七、函数(最重要)          JavaScript(简称JS)是一种运行在浏览器中的脚本语言,它可以让网页变得

    2024年02月13日
    浏览(65)
  • 【前端|Javascript第5篇】全网最详细的JS的内置对象文章!

    前言 在当今数字时代,前端技术正日益成为塑造用户体验的关键。我们在开发中需要用到很多js的内置对象的一些属性来帮助我们更快速的进行开发。或许你是刚踏入前端领域的小白,或者是希望深入了解内置对象的开发者,不论你的经验如何,本篇博客都将给你详细的讲解

    2024年02月12日
    浏览(114)
  • 常见前端基础面试题(HTML,CSS,JS)(三)

      类型转换可以分为两种, 隐性转换 和 显性转换 主要分为三大类:数值类型、字符串类型、布尔类型 三大类的原始类型值的转换规则我就不一一列举了 数值类型(引用类型转换) 字符串类型(引用类型转换) 类型 转换前 转换后 number 4 4 string \\\"1\\\" 1 string \\\"\\\" 0 boolean true 1 b

    2024年02月12日
    浏览(61)
  • 〖大前端 - 基础入门三大核心之JS篇㉟〗- JavaScript 的DOM简介

    说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费 , 如需要项目实战或者是体系化资源,文末名片加V! 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司担任研发部门CTO。 荣誉: 2022年度博客之星Top4、2023年度超

    2024年02月04日
    浏览(54)
  • 前端面试题-js-new关键字-this指向-js事件流-防抖节流

    1.创建一个简单的空对象 2.原型的绑定,确定对象O的原型链 3.绑定this对象为O,传入参数;执行Person构造函数,进行属性和方法的赋值操作 4.返回结果 普通函数的this指向 函数的this指向有一个基本的原则,谁调用的函数,函数的this就指向谁,否则指向全局 箭头函数的this指向

    2024年01月25日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包