为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 网络编程 > javascript 正文

前端面试题JavaScript(一)(前端js笔试题)

三叶资源网 2022-06-27 08:49:14 javascript 609 ℃ 0 评论

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、encodeR0和 decodeR0的作用是什么?

encodeURI()用于将URL转换为十六进制编码。而 decodeURI()用于将编码的URL转换回正常URL。

6、为什么不建议在 JavaScript中使用 innerHTML?

通过 innerHTML修改内容,每次都会刷新,因此很慢。在 innerHTML中没有验证的机会,因此更容易在文档中插入错误代码,使网页不稳定。

7、如何在不支持 JavaScript的旧浏览器中隐藏 JavaScript代码?

在< script>标签之后的代码中添加“<!--”,不带引号。

在< /script>标签之前添加“//-->”,代码中没有引号。

旧浏览器现在将 JavaScript代码视为一个长的HTML注释,而支持 JavaScript的浏览器则将"<!-"和"//-->"作为一行注释。

8、如何实现浏览器内多个标签页之间的通信?

调用 localstorge、 cookie等数据存储通信方式

9、null和 undefined的区别是什么?

null是一个表示“无”的对象,转为数值时为0;undefined是一个表示“无”的原始值,转为数值时为NaN。

当声明的变量还未初始化时,变量的默认值为 undefined 。

null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

undefined表示“缺少值”,即此处应该有一个值,但是还没有定义,典型用法是如下。

(1)如果变量声明了,但没有赋值,它就等于 undefined

(2)当调用函数时,如果没有提供应该提供的参数,该参数就等于 undefined。

(3)如果对象没有赋值,该属性的值为 undefined。

(4)当函数没有返回值时,默认返回 undefined。

null表示“没有对象”,即此处不应该有值,典型用法是如下。

(1)作为函数的参数,表示该函数的参数不是对象。

(2)作为对象原型链的终点。

10、new操作符的作用是什么?

作用如下:

(1)创建一个空对象。

(2)由this变量引用该对象

(3)该对象继承该函数的原型(更改原型链的指向)

(4)把属性和方法加入到this引用的对象中。

(5)新创建的对象由this引用,最后隐式地返回this,过程如下:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
多线程采集驱动开发教程远程文件管理格式化json文本百度贴吧签到鱼刺多线程模块内存皮肤纯组件实现圆形头像GIF表情包制作文件搜索SmartQQLayUI框架趣头条QQ收发消息易包自动审核进群微信图片数据解密日期时间型鱼刺类创建进程
最新评论