前端基础⾯试题(JS部分)
1.⼏种基本数据类型?复杂数据类型?值类型和引⽤数据类型?堆栈数据结构?
基本数据类型:Undefined、Null、Boolean、Number、String
值类型:数值、布尔值、null、undefined。
引⽤类型:对象、数组、函数。
堆栈数据结构:是⼀种⽀持后进先出(LIFO)的集合,即后被插⼊的数据,先被取出!
js数组中提供了以下⼏个⽅法可以让我们很⽅便实现堆栈:
shift:从数组中把第⼀个元素删除,并返回这个元素的值。
unshift: 在数组的开头添加⼀个或更多元素,并返回新的长度
push:在数组的中末尾添加元素,并返回新的长度
pop:从数组中把最后⼀个元素删除,并返回这个元素的值。
web前端基础面试题
2.声明函数作⽤提升?声明变量和声明函数的提升有什么区别?
(1) 变量声明提升:变量申明在进⼊执⾏上下⽂就完成了。
只要变量在代码中进⾏了声明,⽆论它在哪个位置上进⾏声明, js引擎都会将它的声明放在范围作⽤域的顶部;
(2) 函数声明提升:执⾏代码之前会先读取函数声明,意味着可以把函数申明放在调⽤它的语句后⾯。
只要函数在代码中进⾏了声明,⽆论它在哪个位置上进⾏声明, js引擎都会将它的声明放在范围作⽤域的顶部;
(3) 变量or函数声明:函数声明会覆盖变量声明,但不会覆盖变量赋值。
同⼀个名称标识a,即有变量声明var a,⼜有函数声明function a() {},不管⼆者声明的顺序,函数声明会覆盖变量声明,也就是说,此时a的值是声明的函数function a() {}。注意:如果在变量声明的同时初始化a,或是之后对a进⾏赋值,此时a的值变量的值。eg: var a; var c = 1; a = 1; function a() { return true; } console.log(a);
3.判断数据类型?
typeof返回的类型都是字符串形式,可以判断function的类型;在判断除Object类型的对象时⽐较⽅便。
判断已知对象类型的⽅法: instanceof,后⾯⼀定要是对象类型,并且⼤⼩写不能错,该⽅法适合⼀些条件选择或分⽀。
4.异步编程?
nginx php 教程
⽅法1:回调函数,优点是简单、容易理解和部署,缺点是不利于代码的阅读和维护,各个部分之间⾼度耦合
(Coupling),流程会很混乱,⽽且每个任务只能指定⼀个回调函数。
⽅法2:时间监听,可以绑定多个事件,每个事件可以指定多个回调函数,⽽且可以“去耦合”(Decoupling),有利
于实现模块化。缺点是整个程序都要变成事件驱动型,运⾏流程会变得很不清晰。
⽅法3:发布/订阅,性质与“事件监听”类似,但是明显优于后者。php货币2200等于多少人民币
internal storage是什么意思
⽅法4:Promises对象,是CommonJS⼯作组提出的⼀种规范,⽬的是为异步编程提供统⼀接⼝。
企业门户网站
简单说,它的思想是,每⼀个异步任务返回⼀个Promise对象,该对象有⼀个then⽅法,允许指定回调函数。
5.事件流?事件捕获?事件冒泡?
事件流:从页⾯中接收事件的顺序。也就是说当⼀个事件产⽣时,这个事件的传播过程,就是事件流。
IE中的事件流叫事件冒泡;事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点(⽂档)。对于html来说,就是当⼀个元素产⽣了⼀个事件,它会把这个事件传递给它的⽗元素,⽗元素接收到了之后,还要继续传递给它的上⼀级元素,就这样⼀直传播到document对象(亲测现在的浏览器到window对象,只有IE8及下不这样
事件捕获是不太具体的元素应该更早接受到事件,⽽最具体的节点应该最后接收到事件。他们的⽤意是在事件到达⽬标之前就捕获它;也就是跟冒泡的过程正好相反,以html的click事件为例,document对象(DOM级规范要求从document 开始传播,但是现在的浏览器是从window对象开始的)最先接收到click事件的然后事件沿着DOM树依次向下传播,⼀直传播到事件的实际⽬标;
6.如何清除⼀个定时器?
window.clearInterval();
window.clearTimeout();
7.如何添加⼀个dom对象到body中?innerHTML和innerText区别?
body.appendChild(dom元素);
innerHTML:从对象的起始位置到终⽌位置的全部内容,包括Html标签。
innerText:从起始位置到终⽌位置的内容, 但它去除Html标签
分别简述五个window对象、属性
成员对象
window.event window.document window.history
window.screen window.al
Window对象的属性如下:
window //窗户⾃⾝
window.self //引⽤本窗户window=window.self
window.name //为窗户命名
window.defaultStatus //设定窗户状态栏信息
window.location //URL地址,配备布置这个属性可以打开新的页⾯
8.数据持久化技术(ajax)?简述ajax流程
1)客户端产⽣js的事件
2)创建XMLHttpRequest对象
3)对XMLHttpRequest进⾏配置
4)通过AJAX引擎发送异步请求
5)服务器端接收请求并且处理请求,返回html或者xml内容
6)XML调⽤⼀个callback()处理响应回来的内容
7)页⾯局部刷新
9.回调函数?
回调函数就是⼀个通过函数指针调⽤的函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。
10.什么是闭包? 堆栈溢出有什么区别?内存泄漏? 那些操作会造成内存泄漏?怎么样防⽌内存泄漏?
闭包:就是能够读取其他函数内部变量的函数。
堆栈溢出:就是不顾堆栈中分配的局部数据块⼤⼩,向该数据块写⼊了过多的数据,导致数据越界,结果覆盖了别的数据。经常会在递归中发⽣。
内存泄露是指:⽤动态存储分配函数内存空间,在使⽤完毕后未释放,导致⼀直占据该内存单元。直到程序结束。指任何对象在您不再拥有或需要它之后仍然存在。
造成内存泄漏:
setTimeout 的第⼀个参数使⽤字符串⽽⾮函数的话,会引发内存泄漏。
闭包、控制台⽇志、循环(在两个对象彼此引⽤且彼此保留时,就会产⽣⼀个循环)
joomla用的人多不多防⽌内存泄露:
1、不要动态绑定事件;
2、不要在动态添加,或者会被动态移除的dom上绑事件,⽤事件冒泡在⽗容器监听事件;
3、如果要违反上⾯的原则,必须提供destroy⽅法,保证移除dom后事件也被移除,这点可以参考Backbone的源代
码,做的⽐较好;
4、单例化,少创建dom,少绑事件。
11.平时⼯作中怎么样进⾏数据交互?如果后台没有提供数据怎么样进⾏开发?mock数据与后台返回的格式不同意怎么办?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。