你在准备 JavaScript 面试吗?别再看了!本文将介绍10 个常见的 JavaScript 面试问题以及如何在代码示例和解释的帮助下回答这些问题。
提升是 JavaScript 中的一种行为,其中变量和函数声明被移动到其作用域的顶部。这意味着可以在代码中声明变量和函数之前使用它们。但是,只会提升声明,不会提升赋值。
console.log(x); //undefined
var x = 5;
在这个例子中,变量 x 被提升到范围的顶部,但它的赋值 5 没有,所以当我们尝试记录 x 的值时,它返回undefined。
闭包是一个函数,即使在外部函数返回之后,它也可以访问其外部范围内的变量。
function outerFunction(x) {
return function innerFunction() {
return x;
}
}
const myClosure = outerFunction(10);
console.log(myClosure()); //10
在此示例中,内部函数可以从其外部范围innerFunction访问变量,因此即使在返回后它也可以返回其值。xouterFunction
事件冒泡和捕获是在 dom 中传播事件的两种方式。
<div onclick="alert('div')">
<p onclick="alert('p')">
Click me!
</p>
</div>
在这个例子中,如果p元素被点击,事件将首先被p元素捕获并alert('p')调用函数。然后,事件将传播到div元素并alert('div')调用该函数。这是事件冒泡的一个例子。如果我们使用useCaptureaddEventListener 中的参数并将其设置为 true,则事件将div首先被元素捕获,然后传播到p元素。这是一个事件捕获的例子。
在 JavaScript 中,this指函数是其方法的对象。
const person = {
name: "John",
sayName: function() {
console.log(this.name);
}
}
person.sayName(); // "John"
在此示例中,this引用person对象,因此调用this.name返回“John”。的值this可以根据调用函数的方式而改变。
在 JavaScript 中,所有对象都有一个原型,它们从中继承属性和方法。当在对象上调用属性或方法但在该对象上找不到时,JavaScript 将在对象的原型上查找它。
const animal = {
type: "unknown"
}
const dog = Object.create(animal);
dog.breed = "Golden Retriever";
console.log(dog.type); // "unknown"
console.log(dog.breed); // "Golden Retriever"
在此示例中,dog对象是使用 创建的Object.create(),它将animal对象设置为其原型。当我们尝试访问对象type上的属性时dog,它并没有在dog对象本身上找到,所以 JavaScript 在原型上寻找它并在对象上找到它animal。
setTimeout是一个允许您在经过一定时间后执行函数的函数。
console.log("Started!");
setTimeout(() => {
console.log("Hello!");
}, 2000);
console.log("Ended!");
在此示例中,console.log("Started!")立即调用,然后setTimeout使用记录“Hello!”的回调函数调用。和 2000 毫秒的时间。console.log("Ended!")之后立即调用。传递给 setTimeout 的回调函数将在 2 秒后调用。
setInterval类似于setTimeout,但它会以指定的时间间隔重复执行提供的功能。
let count = 0;
const intervalId = setInterval(() => {
console.log(`Interval count: ${count}`);
count++;
if (count === 5) {
clearInterval(intervalId);
}
}, 1000);
在此示例中,提供的函数将每 1000 毫秒(1 秒)执行一次,每次计数都会增加 1。该clearInterval函数用于在 5 次迭代后停止间隔。
Promise 是一个对象,表示异步操作的最终完成(或失败)及其结果值。
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Success!");
}, 2000);
});
promise
.then(result => console.log(result))
.catch(error => console.log(error));
setTimeout在此示例中,使用在 2 秒后调用该函数的函数创建了一个 promise resolve。promise 有两个方法,then和catch,可用于处理已解析的值或发生的任何错误。
==(松散相等)在执行任何必要的类型转换后比较两个值是否相等。===(严格相等)在不执行任何类型转换的情况下比较两个值是否相等。
console.log(0 == false); // true
console.log(0 === false); // false
在此示例中,0和false大致相等,因为它们都是假值,但它们并不严格相等,因为0是一个数字并且false是一个布尔值。
通常建议===在 JavaScript 中用于比较,因为它可以帮助防止意外的类型强制转换。
let和var用于在 JavaScript 中声明变量,但它们的行为略有不同。let变量是块作用域的,这意味着它们只能在声明它们的块内访问。var变量是函数作用域的,这意味着它们可以在它们声明的整个函数内访问。
if (true) {
let x = 5;
}
console.log(x); // ReferenceError: x is not definedCopy code
if (true) {
var x = 5;
}
console.log(x); // 5
const用于声明一个常量变量,这意味着它的值在声明后不能重新赋值。
const x = 5;
x = 10; // TypeError: Assignment to constant variable
const通常,最佳做法是默认使用并且仅let在需要重新分配变量时才使用。
通过了解这些常见的 JavaScript 面试问题,您将为下一次面试做好充分准备!不要让这些问题让你措手不及,对你的答案充满信心并炫耀你的 JavaScript 知识。
来源英文:https://medium.com/@maria_laramie/10-common-javascript-interview-questions-and-how-to-answer-them-328b59806cf7
很多童鞋可能年后有自己的一些计划,比如换份工作环境,比如对职业目标有了新的打算。当然面试这一关不得不过,大概又不可能系统性的复习,这里罗列一些 重点 面试的知识点和文章,
什么是webpack和grunt和gulp有什么不同?什么是bundle,什么是chunk,什么是module?什么是Loader?什么是Plugin?如何可以自动生成webpack配置?webpack-dev-server和http服务器如nginx有什么区别?
多问问应聘者高层次的知识点,如果能讲清楚这些概念,就说明即使应聘者没怎么接触过 JavaScript,也能够在短短几个星期之内就把语言细节和语法之类的东西弄清楚。
面试比棘手的技术问题要多,这篇文章整理了37个JavaScript基本面试问题和解答,这些仅仅是作为指导。希望对前端开发的你有所帮助!
React常见面试题:React中调用setState之后发生了什么事情?React中Element与Component的区别?优先选择使用ClassComponent而不是FunctionalComponent?React中的refs属性的作用是什么?React中keys的作用是什么?
题目大意为:JS 环境下,如何让 a == 1 && a == 2 && a == 3 这个表达式返回 true ?这道题目乍看之下似乎不太可能,因为在正常情况下,一个变量的值如果没有手动修改,在一个表达式中是不会变化的。
10道JavaScript题目:累加函数addNum、实现一个Person类、实现一个arrMerge 函数、实现一个toCamelStyle函数、setTimeout实现重复调用、实现一个bind函数、实现一个Utils模块、输出一个对象自身的属性
面试开场白总缺少不了自我介绍,一方面是面试官想听听你对自己的介绍,顺便有时间看看简历上的描述,是否与口述一致。另一方面就是看看你简历上做过什么项目,用到了哪些技术栈,一会儿好提问你。
把面试当做学习,这个过程你会收益很大。前端知识很杂,可能实际工作中用到的技术,像框架都是跟着公司的要求走的,像我最近也在看React啦,Vue和React都对比着再学习
vue上手可以说是比较轻松而且简单,如果你用过angular,react,你也会很喜欢vue。vue的核心思想依旧是:构建用户界面的渐进式框架,关注视图的变化。这也是为什么新建的文件是结构是template script style
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!