没有合适的资源?快使用搜索试试~ 我知道了~
前端js基础测试题.pdf
需积分: 11 0 下载量 160 浏览量
2022-12-04
00:16:32
上传
评论
收藏 206KB PDF 举报
温馨提示
试读
17页
前端js基础测试题.pdf
资源推荐
资源详情
资源评论
1、JavaScript 有哪些垃圾回收机制?
有以下垃圾回收机制。
标记清除( mark and sweep)
这是
JavaScript
最常见的垃圾回收方式。当变量进入执行环境的时候,比如在
函数中声明一个变量,垃圾回收器将其标记为“进入环境”。当变量离开环境的时
候(函数执行结束),将其标记为
“
离开环境
”
。
垃圾回收器会在运行的时候给存储在内存中的所有变量加上标记,然后去掉环境
中的变量,以及被环境中变量所引用的变量(闭包)的标记。在完成这些之后仍
然存在的标记就是要删除的变量。
引用计数(
reference counting
)
在低版本的 E 中经常会发生内存泄漏,很多时候就是因为它采用引用计数的方
式进行垃圾回收。引用计数的策略是跟踪记录每个值被使用的次数。
当声明了一个变量并将个引用类型赋值给该变量的时候,这个值的引用次数就加
1.
如果该变量的值变成了另外一个,则这个值的引用次数减
1.
当这个值的引用次
数变为 0 的时候,说明没有变量在使用,这个值没法被访问。
因此,可以将它占用的空间回收,这样垃圾回收器会在运行的时候清理引用次数
为 0 的值占用的空间在正中虽然 JavaScript 对象通过标记清除的方式进行垃圾
回收,但是
BOM
与
DOM
对象是用引用计数的方式回收垃圾的。
也就是说,只要涉及 BOM 和 DOM,就会出现循环引用问题
2
、列举几种类型的
DOM
节点
有以下几类 DOM 节点。
整个文档是一个文档(
Document
)节点。
每个 HTML 标签是一个元素( Element)节点。
每一个
HTML
属性是一个属性(
Attribute
)节点。
包含在 HTML 元素中的文本是文本(Text)节点。
3、谈谈 script 标签中 defer 和 async 属性的区别。
区别如下。
(1) defer 属性规定是否延迟执行脚本,直到页面加载为止, async 属性规定
脚本一旦可用,就异步执行。
(2) defer 并行加载 JavaScript 文件,会按照页面上 script 标签的顺序执行,
async
并行加载
JavaScript
文件,下载完成立即执行,不会按照页面上
script
标签的顺序执行。
4
、说说你对闭包的理解。
使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的
污染;缺点是闭包会常驻内存,增加内存使用量,使用不当很容易造成内存泄漏。
在 JavaScript 中,函数即闭包,只有函数才会产生作用域闭包有 3 个特性
(
1
)函数嵌套函数。
(2)在函数内部可以引用外部的参数和变量
(
3
)参数和变量不会以垃圾回收机制回收
5、解释一下 unshift0 方法。
该方法在数组启动时起作用,与
push()
不同。它将参数成员添加到数组的顶部
下面给出一段示例代。
var name=["john"]
name. unshift("charlie");
name.unshift
(
"joseph"
,
"Jane"
);
console. log(name);
输出如下所示。
[" joseph ", Jane "," charlie "," john "]
6
、
encodeR0
和
decodeR0
的作用是什么?
encodeURI()用于将 URL 转换为十六进制编码。而 decodeURI()用于将编码的
URL
转换回正常
URL
。
7、为什么不建议在 JavaScript 中使用 innerHTML?
通过 innerHTML 修改内容,每次都会刷新,因此很慢。在 innerHTML 中没有
验证的机会,因此更容易在文档中插入错误代码,使网页不稳定。
8、如何在不支持 JavaScript 的旧浏览器中隐藏 JavaScript 代码?
在
< script>
标签之后的代码中添加
“<
!
--”
,不带引号。
在< /script>标签之前添加“//-->”,代码中没有引号。
旧浏览器现在将
JavaScript
代码视为一个长的
HTML
注释,而支持
JavaScript
的浏览器则将"<!-"和"//-->"作为一行注释。
9
、在
DOM
操作中怎样创建、添加、移除、替换、插入和查找节点?
具体方法如下。
(
1
)通过以下代码创建新节点。
createDocument Fragment ()
//
创建一个
D0M
片段
createElement ()
//
创建一个具体的元素
createTextNode ()
//
创建一个文本节点
(2)通过以下代码添加、移除、替换、插入节点
appendchild()
removechild()
eplacechild ()
insertBefore ()
//
并没有
insertAfter
()
(3)通过以下代码查找节点。
getElementsByTagName ()
//通过标签名称查找节点
getElementsByName ()
//通过元素的 name 属性的值查找节点(IE 容错能力较强,会得到一个数//组,
其中包括
id
等于
name
值的节点)
getElementById(
剩余16页未读,继续阅读
资源评论
qq_de
- 粉丝: 13
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功