专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 职业指南 高频出现的一些Js面试题及答案

高频出现的一些Js面试题及答案

更新时间:2023-01-29 11:27:03 来源:星辉 浏览749次

最近小编看到不少同学在求助这想要找一套比较专业的Js面试题,今天小编主要针对这一点从各大论坛以及从老师那里套取出的一些大厂高频出现的相关Js面试题,做出了以下整理,分享给大家,希望能够为大家来一次全方位的查漏补缺。

js面试题及答案

1. JS延迟加载的方式有哪些?

一般有六种方式;defer属性、async属性、动态创建dom方式、使用jquery的getScript方法、使用setTimeout延迟方法、让js最后加载。

defer属性:延迟脚本。立即下载,但延迟执行(延迟到整个页面都解析完毕后再运行),按照脚本出现的先后顺序执行。

async属性:异步脚本。下载完立即执行,但不保证按照脚本出现的先后顺序执行;

动态创建dom方式

使用jquery的getScript方法:getScript() 方法通过 HTTP GET 请求载入并执行 JavaScript 文件。

语法:jQuery.getScript(url,success(response,status))

使用setTimeout延迟方法

让js最后加载 将脚本元素放在文档体的底端(标签前面),这样脚本就可以在HTML解析完毕后加载了。但此方案的问题是,只有在所有HTML DOM加载完成后才开始脚本的加载/解析过程。对于有大量js代码的大型网站,可能会带来显著的性能损耗。

2.同步和异步的区别?

同步的概念在操作系统中:不同进程协同完成某项工作而先后次序调整(通过阻塞、唤醒等方式),同步强调的是顺序性,谁先谁后。异步不存在顺序性。

同步:浏览器访问服务器,用户看到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容之后进行下一步操作。

异步:浏览器访问服务器请求,用户正常操作,浏览器在后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。

3.call和applyd的区别?

call()方法和apply()方法的作用相同,动态改变某个类的某个方法的运行环境。他们的区别在于接收参数的方式不同。

区别:

在使用call()方法时,传递给函数的参数必须逐个列举出来

使用apply()时,传递给函数的是参数数组。

4.documen.write和 innerHTML的区别?

document.write()只能重绘整个页面

setTimeout(function(){
       document.write('<p>5 secs later</p>');
}, 5000);

或者

window.onload = function() { document.write("HI");

innerHTML可以重绘页面的一部分

5.数组对象有哪些原生方法,列举一下?

pop、push、shift、unshift、splice、reverse、sort、concat、join、slice、toString、indexOf、lastIndexOf、reduce、reduceRight、forEach、map、filter、every、some

6.Javascript实现继承的几种方式?

Javascript实现继承有三种方式:

方式一:构造函数法(又叫经典继承)

function SuperType(name) {
    this.name = name;
    this.sayName = function() {
        window.alert(this.name);
    };
}
function SubType(name, age) {
    SuperType.call(this, name); //在这里借用了父类的构造函数
    this.age = age;
}

方式二:对象冒充

function SuperType(name) {
    this.name = name;
    this.sayName = function() {
        window.alert(this.name);
    }
}   
function SubType(name, age) {
    this.supertype = SuperType; //在这里使用了对象冒充
    this.supertype(name);
    this.age = age;
}

方式三:组合继承(最常用)

function SuperType(name) {
    this.name = name
}    
SuperType.prototype = {
    sayName : function() {
        window.alert(this.name);
    }
};     
function SubType(name, age) {
    SuperType.call(this, name); //在这里继承属性
    this.age = age;
}
SubType.prototype = new SuperType(); //在原型上继承方法

7、什么是闭包(closure),说说优缺点?

闭包:指的是一个函数可以访问另一个函数作用域中变量。常见的构造方法,是在一个函数内部定义另外一个函数。内部函数可以引用外层的变量;外层变量不会被垃圾回收机制回收。

注意,闭包的原理是作用域链,所以闭包访问的上级作用域中的变量是个对象,其值为其运算结束后的最后一个值。

优缺点:

优点:避免全局变量污染。

缺点:容易造成内存泄漏。

8、new操作符具体干了什么呢?

创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。

属性和方法被加入到 this 引用的对象中。

新创建的对象由 this 所引用,并且最后隐式的返回 this 。

以上就是“高频出现的一些Js面试题及答案”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注星辉Java官网。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>