位置: 编程技术 - 正文

js前端面试题及答案整理(一)(前端面试题csdn)

编辑:rootadmin

推荐整理分享js前端面试题及答案整理(一)(前端面试题csdn),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js前端面试题及答案,前端面试js常见问题,前端面试题csdn,js前端笔试题,前端面试js常见问题,js 前端面试题,前端面试js常见问题,js 前端面试题,内容如对您有帮助,希望把文章链接给更多的朋友!

Part1 手写代码

现场手写代码是现在面试中很常见的一类面试题,考察基础的数据结构与算法能力。

1 数组去重的实现基本数组去重

&#;利用hash表去重,这是一种空间换时间的方法

上面的方法存在一个bug,对于数组[1,2,'1','2',3],去重结果为[1,2,3],原因在于对象对属性索引时会进行强制类型转换,arr[‘1']和arr[1]得到的都是arr[1]的值,因此需做一些改变:

&#;先排序后去重

2 快速排序的实现

方法一(尽可能不用js数组方法):

方法二(使用js数组方法):

另外要知道,快速排序的平均时间复杂度O(nlogn),最坏情况是有序的情况,时间复杂度为n的平方,另外快速排序是不稳定的。

Part2 JavaScript相关

1 JavaScript基础数据类型

JavaScript数据类型包括原始类型和引用类型,原始类型有五个: Number(数值) String(字符串) Boolean(布尔) Null(空) Undefined(未定义)

引用类型有一个: Object(对象)

通过typeof(x)可以返回一个变量x的数据类型“number”、“string”、“boolean”、“undefined”、"object",这里要注意一点:typeof运算符对于null类型返回的是object。

《JavaScript高级程序设计》: 这实际上是JavaScript最初实现中的一个错误,后来被ECMAScript沿用了。现在null被认为是对象的占位符,从而解释了这一矛盾。但是从技术上来说,它仍然是原始值。

2 谈一谈JavaScript作用域链

当执行一段JavaScript代码(全局代码或函数)时,JavaScript引擎会创建为其创建一个作用域又称为执行上下文(Execution Context),在页面加载后会首先创建一个全局的作用域,然后每执行一个函数,会建立一个对应的作用域,从而形成了一条作用域链。每个作用域都有一条对应的作用域链,链头是全局作用域,链尾是当前函数作用域。作用域链的作用是用于解析标识符,当函数被创建时(不是执行),会将this、arguments、命名参数和该函数中的所有局部变量添加到该当前作用域中,当JavaScript需要查找变量X的时候(这个过程称为变量解析),它首先会从作用域链中的链尾也就是当前作用域进行查找是否有X属性,如果没有找到就顺着作用域链继续查找,直到查找到链头,也就是全局作用域链,仍未找到该变量的话,就认为这段代码的作用域链上不存在x变量,并抛出一个引用错误(ReferenceError)的异常。

js前端面试题及答案整理(一)(前端面试题csdn)

3 如何理解JavaScript原型链

JavaScript中的每个对象都有一个prototype属性,我们称之为原型,而原型的值也是一个对象,因此它也有自己的原型,这样就串联起来了一条原型链,原型链的链头是object,它的prototype比较特殊,值为null。原型链的作用是用于对象继承,函数A的原型属性(prototype property)是一个对象,当这个函数被用作构造函数来创建实例时,该函数的原型属性将被作为原型赋值给所有对象实例,比如我们新建一个数组,数组的方法便从数组的原型上继承而来。当访问对象的一个属性时, 首先查找对象本身, 找到则返回; 若未找到, 则继续查找其原型对象的属性(如果还找不到实际上还会沿着原型链向上查找, 直至到根). 只要没有被覆盖的话, 对象原型的属性就能在所有的实例中找到,若整个原型链未找到则返回undefined;

4 JavaScript变量声明提前

《JavaScript权威指南》中是这样解释的:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声明的所有变量(但不涉及赋值)都被“提前”至函数的顶部。从一个例子来看:

控制台打印出来的不是“global”而是“undefined”,这是因为在myFunc这个函数的作用域中,局部变量scope声明被提前至函数顶部,而此时,scope仅声明,未赋值,因此输出undefined。实际上,上面的代码和下面的效果是一样的:

5 如何理解和应用JavaScript闭包

关于闭包具体的定义文献中给的概念很抽象,我认为闭包是一种使函数能够都去其它函数的局部变量的语法机制。

举个例子:

这这个例子我们可以看出,在函数inFunc中依然可以访问outFunc的局部变量name。

闭包应用举例,模拟类的私有属性,利用闭包的性质,局部变量只有在sayAge方法中才可以访问,而name在外部也访问,从而实现了类的私有属性。

要了解详细的闭包,推荐一下 阮一峰的网络日志-学习Javascript闭包(Closure)。

6 new构建对象的本质

通过new操作符,实际上在构造函数User中完成了如下操作:&#;创建一个新的对象,这个对象的类型是object;&#;设置这个新的对象的内部、可访问性和prototype属性为构造函数(指prototype.construtor所指向的构造函数)中设置的;&#;执行构造函数;&#;返回新创建的对象。

如果构造函数默认返回的新创建的this对象,如果手动return 一个变量的话,如果该变量是原始类型则无效,如果是对象,则返回该对象。

7 JavaScript代理

当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委托给父节点来触发处理函数。

比如我们需要向一个ul中动态添加很多个li,需要遍历li逐个添加点击事件

众所周知,DOM操作是十分消耗性能的。所以重复的事件绑定简直是性能杀手。而事件代理的核心思想,就是通过尽量少的绑定,去监听尽量多的事件。如何做呢?答案是利用事件冒泡机制,对其父节点ul进行事件绑定(Event Bubble),然后通过event.target来判断是哪个节点触发的事件,从而减少很多EventHandler的绑定。

发现新内容会持续更新...

前端面试题及答案整理(二) Part1CSS相关1内联元素(inline-element)和块元素(blockelement)分别有哪些常见内联元素(行内元素)有a、b、span、i、em、input、select、img等常见的块元素有d

XMLHttpRequest Level 2 使用指南 XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信。最早,微软在IE5引进了这个接口。因为它太有用,其他浏览器也模仿部署了,ajax操作因

每个程序员都需要学习 JavaScript 的7个理由小结 最近在和招聘经理交流现在找一个好的程序员有多难的时候,我渐渐意识到了现在编程语言越来越倾重于JavaScript。Web开发人员尤其如此。所以,如果你

标签: 前端面试题csdn

本文链接地址:https://www.jiuchutong.com/biancheng/373578.html 转载请保留说明!

上一篇:浅析Javascript ES6中的原生Promise

下一篇:前端面试题及答案整理(二)(前端面试题及答案2023vue3)

  • 居民个人的综合所得
  • 财务报表没报会影响出口退税吗为什么
  • 进料加工出口退税政策
  • 发票备注没写
  • 小规模纳税人收入账务处理
  • 分配本月职工薪酬会计分录该怎么做合适?
  • 企业返利如何处理
  • 政府补助的失业金发放准时吗
  • 生产企业的安全员好干吗
  • 营改增后不动产租赁税率
  • 房产税申报后多久缴纳税款
  • 无票收入如何做账
  • 一般户可以收货款么
  • 2021年个体工商户的税率是多少
  • 一般纳税人高速公路通行费税率
  • 补发住房补贴征求意见
  • 资金占用利息怎么开票
  • 个人将租来的房子转租如何交税
  • 如何把操作系统转移到固态硬盘
  • 王者荣耀中孙膑是男的女的
  • linux开启
  • 印花税减免需要做账吗现在
  • outlook的数据文件
  • php数据库分页是怎么实现的
  • php 数字转中文
  • Program Files(x86)是什么意思
  • 公司的清洁费用是什么科目
  • 预付款指的是
  • php文件扩展名是什么
  • php的array_multisort()使用方法介绍
  • 计算机网络的基本概念
  • vue中下载文件
  • php自定义表单系统
  • 应收账款在贷方如何平账
  • 怎么查商品的税率
  • 报表重分类和不重分类
  • 用smart原则改写年底前完善客户资料
  • phpsession和cookie
  • 二次封装机
  • 圣米歇尔山法语介
  • php控制结构
  • 融资租入的办公楼
  • Selenium.Webdriver最新语法教程(附Chrome实例演示)
  • 会计分录结转进项怎么算
  • 商会年会活动策划方案模板
  • 虚开增值税发票不是也要缴税吗
  • 低值易耗品如何界定
  • 小微企业增值税起征点是多少
  • 发票第一联需要盖发票专用章吗
  • 技术使用费 收费标准
  • 自然人扣缴系统怎么申报个税
  • 财务做帐的金额怎么算
  • sql server2008代理无法启动
  • 同城票据交换原理
  • 房租没有发票如何交税
  • 资产负债表金额的来源一般是
  • 托盘费用怎么核算
  • 经营活动产生的现金流量净额越大越好吗
  • 劳务费免税发票怎么开
  • 填制会计凭证要求的是
  • 开票软件备份在哪里
  • 劳务派遣人员能有营业执照吗
  • Sqlserver 2000/2005/2008 的收缩日志方法和清理日志方法
  • cf游戏初始化失败是因为什么
  • utilman.exe - utilman是什么进程
  • win7旗舰版和家庭版哪个对电脑要求低
  • ssh免密登录执行shell
  • 网络连接受限怎么处理win8
  • window10自动维护功能有什么用
  • cocos2dx 3.1 cpp版本转lua版本 mac
  • ext combox 下拉框不出现自动提示,自动选中的解决方法
  • jQuery的ajax中使用FormData实现页面无刷新上传功能
  • Node.js中的construct构造函数
  • python的异常处理语句
  • jsonobject.parseobject异常
  • 不用税控盘可以勾选发票吗
  • 税务登记证用来干嘛
  • 海关进口增值税专用缴款书在哪里打印
  • 北京的个人所得税怎么算
  • 个体户不用开发票只纳税和记账的话还会罚款吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设