没有合适的资源?快使用搜索试试~ 我知道了~
声明变量和声明函数的提升有什么区别?(1) 变量声明提升:变量申明在进入执行上下文就完成了。只要变量在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都
资源详情
资源评论
资源推荐
1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据
结构?
基本数据类型:Undefined、Null、Boolean、Number、String
值类型:数值、布尔值、null、undefined。
引用类型:对象、数组、函数。
堆栈数据结构:是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出!
js 数组中提供了以下几个方法可以让我们很方便实现堆栈:
shift:从数组中把第一个元素删除,并返回这个元素的值。
unshift: 在数组的开头添加一个或更多元素,并返回新的长度
push:在数组的中末尾添加元素,并返回新的长度
pop:从数组中把最后一个元素删除,并返回这个元素的值。
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.异步编程?
方法 1:回调函数,优点是简单、容易理解和部署,缺点是不利于代码的阅读和维护,各个
部分之间高度耦合(Coupling),流程会很混乱,而且每个任务只能指定一个回调函数。
方法 2:时间监听,可以绑定多个事件,每个事件可以指定多个回调函数,而且可以“去耦
合”(Decoupling),有利于实现模块化。缺点是整个程序都要变成事件驱动型,运行流程会
变得很不清晰。
方法 3:发布/订阅,性质与“事件监听”类似,但是明显优于后者。
方法 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.navigator window.external
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 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
防止内存泄露:
1、不要动态绑定事件;
2、不要在动态添加,或者会被动态移除的 dom 上绑事件,用事件冒泡在父容器监听事件;
3、如果要违反上面的原则,必须提供 destroy 方法,保证移除 dom 后事件也被移除,这点
可以参考 Backbone 的源代码,做的比较好;
4、单例化,少创建 dom,少绑事件。
11.平时工作中怎么样进行数据交互?如果后台没有提供数据怎么样进行
开发?mock 数据与后台返回的格式不同意怎么办?
由后台编写接口文档、提供数据接口实、前台通过 ajax 访问实现数据交互;
在没有数据的情况下寻找后台提供静态数据或者自己定义 mock 数据;
返回数据不统一时编写映射文件 对数据进行映射。
12 简述 ajax 执行流程
基本步骤:var xhr =null;//
创建对象
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();}else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");}xhr.open(“方式”,”地址”,”标
志位”);//
初始化请求
xhr.setRequestHeader(“”,””);//
设置
http
头信息
xhr.onreadystatechange =function(){}//
指定回调函数
xhr.send();//
发送请求
13.自执行函数?用于什么场景?好处?
自执行函数:1、声明一个匿名函数 2、马上调用这个匿名函数。
作用:创建一个独立的作用域。
好处:防止变量弥散到全局,以免各种 js 库冲突。隔离作用域避免污染,或
者截断作用域链,避免闭包造成引用变量无法释放。利用立即执行特性,返
回需要的业务函数或对象,避免每次通过条件判断来处理
场景:一般用于框架、插件等场景
14.html 和 xhtml 有什么区别?
HTML 是一种基本的 WEB 网页设计语言,XHTML 是一个基于 XML 的标记语言。
1.XHTML 元素必须被正确地嵌套。
2.XHTML 元素必须被关闭。
3.标签名必须用小写字母。
4.空标签也必须被关闭。
5.XHTML 文档必须拥有根元素。
剩余36页未读,继续阅读
战神哥
- 粉丝: 46
- 资源: 325
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0