JavaScript(最初称为Mocha)是由Brendan Eich于1995年在网景通信公司开发的。它是一种基于对象的脚本语言,用于开发和管理视觉上有吸引力的、动态的和交互式的内容,如网络应用中的旋转木马(幻灯片)。它在前端/客户端和后端/服务器端都有使用。你们中的大多数人可能已经知道了这些,因为你们已经来到了JavaScript面试问题的文章。所以让我们继续吧。
每个大公司都使用JavaScript来构建其网络应用程序,因此全球各地对JavaScript开发人员的需求都很高。要想获得一份工作,并建立起作为JavaScript开发人员的职业生涯,你需要在面试中取得胜利。根据你所申请的工作和你的经验水平,你可能会在面试中被问到不同的问题。这篇文章包含了适合各种经验水平的问题,从刚毕业的学生到比较老练的开发者。
JavaScript面试问题
这里列出了最常见的JavaScript面试问题及其答案。
问题1:使用let、var和const来声明变量有什么区别?
var、let和const 都是用来声明变量的;但用let 和const 声明的变量的范围仅限于代码块(一组大括号定义了一个代码块),而用var 声明的变量是全局范围的。下面是一个显示变量范围的例子。
if (true) {
var a = 1;
let b = 2;
console.log(a);
console.log(b);
}
console.log(a);
// b is undefined outside of the block as it was declared using let
console.log(b);
if (true) {
var a = 1;
const c = 3;
console.log(a);
console.log(c);
}
console.log(a);
// Similarly, c is also undefined outside of the block
console.log(c);
var 和let 的另一个区别是,用var 创建的变量可以被重新声明和重新定义,而用let 关键字创建的变量只能被重新定义。用let 关键字声明的变量也可以在不同的块中重新声明。
用const 声明的变量是块范围的,它们的值不能被改变。它们不能被重新定义或重新声明,必须在声明时被初始化。
问题2:如何区分"="、"=="和"=="运算符?
=是一个赋值运算符,用于设置一个变量的值。== 运算符用于比较两个变量的值,而**===运算符则是比较两个变量的值和类型。如果我们将'1'(字符串)与1(整数)进行比较,=** **==运算符将返回真,而===**运算符将返回假。
'1' == 1
'1' === 1
if ('1' == 1) {
console.log(true);
}
else {
console.log(false);
}
if ('1' === 1) {
console.log(true);
}
else {
console.log(false);
}
问题3:"undefined "和 "null "之间的区别?
在JavaScript中,如果一个变量没有被初始化,它将被默认分配为undefined 值,而null 值则必须手动分配给一个变量。
问题4:如何在JavaScript中给对象分配属性?
在JavaScript中,有两种不同的方法用来给对象分配属性。
- 通过使用点"**. "**运算符
- 通过使用方括号的语法
var user = {firstName:"Mary", lastName:"Jane"};
user.age = 33;
user['id'] = 05;
问题5:静态类型语言和动态类型语言的区别是什么?
静态类型语言要求你在声明变量时定义它的数据类型,而在动态类型语言中没有这种限制。动态类型语言在运行时进行类型检查,而静态类型编程语言则同时执行任务。
在动态类型语言中,一个变量可以用来存储任何数据类型,而在静态语言中,一个变量只能存储一种数据类型。
JavaScript、Python和Ruby是动态类型语言的例子,而C、C++和Java是静态类型语言的例子。
问题6:什么是JavaScript的吊装?
JavaScript有一个默认的行为叫寄存,它把所有的变量和函数声明移到作用域的顶部。在JavaScript中,一个变量可以在它被声明之前就被使用。
问题7:pop()、push()和shift()、unshift()方法之间的区别
pop() 和push()方法分别用于在数组的结束点删除和添加一个元素/项目。而shift() 和unshift() 方法是用来从数组的起始点移除和添加元素/项。
var intArr = [23, 45, 67];
intArr.pop(); // returns the removed item
console.log(intArr);
var intArr = [23, 45];
intArr.push(67); // returns the new array length
console.log(intArr);
var intArr = [23, 45, 67];
intArr.shift(); // returns the removed item
console.log(intArr);
var intArr = [45, 67];
intArr.unshift(23); // returns the new array length
console.log(intArr);
问题8:什么是 "this "关键词
在JavaScript中,这个 关键字有不同的含义,这取决于它被使用的地方。在JavaScript代码中单独使用的this 关键字指的是全局对象,而当与一个方法一起使用时,它指的是拥有该特定方法的对象。在函数中使用时,它也是指全局对象,但在严格模式的函数中,它是未定义的。在事件中使用的this 关键字指向接收该事件的元素。
问题9:什么是javascript中的类?
类不是原生的,只是最近才加入到JavaScript中。它们只是建立在原型之上的语法糖。它们被用作创建对象的蓝图/模板。
问题10:下面的代码会返回什么。
typeof typeof 10;
上面给出的代码返回"字符串"。它可以被分为两个不同的部分。
- typeof 10
- typeof 10的返回值的类型
console.log(typeof 10);
console.log(typeof 'number');
问题11:在JavaScript源文件的顶部添加'use strict'有什么作用?
在JavaScript源文件的顶部添加'use strict'是为了在严格模式下运行代码。它将JavaScript从一种动态类型的语言转换为更加严格的语言。它可以防止你使用未声明的变量。
使用严格 " 使JavaScript代码变得安全,并鼓励开发者不要使用以前在JavaScript中接受的不良语法。
问题12:什么是cookies?
Cookies是储存用户在浏览时的信息的文本文件。它们保存了用户的状态。在用户每次向服务器发送新的请求时,Cookies都用来记住用户的信息。
JavaScript有一个内置的属性"document.cookie", 它可以用来读取、写入和修改cookie文件。
问题13:什么是javascript中的setTimeout?
setTimeout() 是JavaScript的一个本地方法,用于在定义的时间后调用一个函数。
问题14:javascript和node.js有什么不同?
JavaScript是一种脚本语言,而node.js是一种在浏览器外运行JavaScript的环境和解释器。
问题15:什么是闭合?
在JavaScript中,闭包是指在另一个函数内声明和定义的函数。被嵌套在另一个函数里面的函数可以访问它自己的变量和它的父函数的变量,以及全局变量。
例子。
var one = 1;
functionparent()
{
var two = 2;
functionchild()
{
var three = 3;
console.log(one + two + three);
}
child();
}
parent();
问题16.我们可以在javaScript的数组中存储对象吗?
是的,我们可以在JavaScript的数组中存储任何东西。甚至不是对象,而是数组中的对象数组或函数。
问题17.数组的数据类型是什么?
在JavaScript中,数组的数据类型是一个对象,因为它存储数据,行为完全像一个对象。
在一个数组元素上使用typeof()操作符将显示该变量为一个对象。
var arr = [1,3,6,54]
console.log(typeof(arr));
输出
然而,如果你真的想知道一个变量是数组还是对象,你可以使用Array.isArray()方法。
问题18.JavaScript中是否有关联数组?
没有,javascript不支持带索引的数组。为了这个目的,JavaScript中可以使用对象。
问题19:在javascript中,map()函数是做什么的?
当我们需要遍历整个数组并改变数组中每个元素的值时,就会用到map()函数。
例如,如果我们有一个数字列表,我们想给每个数字加上5。
var arr = [20, 30, 40, 50];
arr.map((n)=>{
return n+5;
});
问题20:30+50+"20 "的输出将是什么?
给定表达式的输出将是8020。
由于30 和50 是整数,它们将作为整数相加,答案将是80。后来,"20"是一个字符串,所以80 将与 "**20 "相连接,**最后的结果是 "8020"。
结论
申请一份新的工作和经历一次面试可能会感觉是一项压倒性的任务,会引起极大的焦虑,但你需要相信自己。
这篇文章包含了申请 "JavaScript开发人员 "职位时面试官最常问的一些面试问题。