首页 > 400个最常见的 JavaScript 面试问答(7)

400个最常见的 JavaScript 面试问答(7)

头像
海拥
编辑于 08-08 11:00 APP内打开
赞 28 | 收藏 156 | 回复4 | 浏览1705

本文正在参与【[ 面霸养成记 ] 】 征文活动,一起来聊聊校招的那些事吧,牛客周边和百元京东卡等你来领~

写在前面的

大家好,我是 海拥 ,专注于前端知识的分享。今天将给大家带来的是 400 个最常见的 JavaScript 面试问答第七部分。接下来我会持续更新(争取日更,也可能每周3-5篇),每小节大概 10 道题左右,总共会有 400 多道。

大家一定要记得点赞收藏呀!!!

编号 问题
1 在 JavaScript 中创建对象的可行方法有哪些?
2 什么是原型链?
3 call、apply、bind有什么区别?
4 什么是 JSON 及其常见操作?
5 数组slice()方法的目的是什么?
6 数组splice()方法的目的是什么?
7 slice()和splice()有什么区别?
8 你如何比较 Object 和 Map
9 == 和 === 运算符有什么区别?
10 什么是 lambda 或 箭头函数?
11 什么是头等函数?
12 什么是一阶函数?
13 什么是高阶函数?
14 什么是一元函数?
15 什么是柯里化函数?
16 什么是纯函数?
17 let 关键字的用途是什么?
18 let 和 var 有什么区别?
19 为什么选择 let 这个名字作为关键字?
20 你如何在没有错误的情况下重新声明 switch 块中的变量?
21 什么是暂时性死区?
22 什么是IIFE(立即执行函数表达式)?
23 使用模块有什么好处?
24 什么是memoization(记忆)?
25 什么是Hoisting(变量提升)?
26 ES6 中的类是什么?
27 什么是closures(闭包)?
28 什么是modules(模块)?
29 为什么需要模块?
30 javascript 中的作用域是什么?
31 什么是Service Worker?
32 如何使用 Service Worker 操作 DOM?
33 如何在 Service Worker 重新启动时重用信息?
34 什么是 IndexedDB?
35 什么是 web storage?
36 什么是 post message?
37 什么是 Cookie ?
38 为什么需要 Cookie ?
39 cookie 中有哪些选项 ?
40 你如何删除cookie ?
41 cookie、本地存储和会话存储有什么区别 ?
42 localStorage 和 sessionStorage 的主要区别是什么?
43 你如何访问web 存储?
44 会话存储有哪些可用的方法?
45 什么是存储事件及其事件处理程序?
46 为什么需要web 存储?
47 你如何检查 Web 存储浏览器支持?
48 你如何检查web workers浏览器支持?
49 举个 web worker 的例子
50 web worker 对 DOM 的限制是什么?
51 什么是promise?
52 为什么需要promise?
53 promise的三种状态是什么?
54 什么是回调函数?
55 为什么我们需要回调?
56 什么是回调地狱?
57 什么是服务器发送事件?
58 你如何接收服务器发送的事件通知?
59 你如何检查浏览器对服务器发送事件的支持?
60 服务器发送的事件有哪些可用的事件?
61 promise的主要规则是什么?
62 回调中的回调是什么?
63 什么是 promise chaining?
64 什么是 promise.all?
65 promise 中 race 方法的目的是什么?
66 什么是 javascript 中的严格模式?
67 为什么需要严格模式?
68 如何声明严格模式?
69 双感叹号的目的是什么?
70 删除运算符的目的是什么?

61.promise的主要规则是什么?

promise必须遵循一组特定的规则,

  • promise是提供符合标准的.then()方法的对象
  • 挂起的promise可以转换为已完成或拒绝状态
  • 已完成或被拒绝的promise已解决,并且不得转换为任何其他状态。
  • 一旦promise被解决,价值就不能改变。

⬆ 返回顶部


62.回调中的回调是什么?

您可以将一个回调嵌套在另一个回调中,以依次执行操作。这被称为回调中的回调。

loadScript('/script1.js', function(script) {
   console.log('first script is loaded');
  loadScript('/script2.js', function(script) {
    console.log('second script is loaded');
    loadScript('/script3.js', function(script) {
        console.log('third script is loaded');
      // 加载所有脚本后
    });
  })
});

⬆ 返回顶部


63.什么是promise chaining?

使用 Promise 一个接一个地执行一系列异步任务的过程称为 Promise chaining。让我们举一个计算最终结果的promise chaining的例子,

new Promise(function(resolve, reject) {
  setTimeout(() => resolve(1), 1000);
}).then(function(result) {
  console.log(result); // 1
  return result * 2;
}).then(function(result) {
  console.log(result); // 2
  return result * 3;
}).then(function(result) {
  console.log(result); // 6
  return result * 4;
});

在上述处理程序中,结果通过以下工作流程传递给 .then() 处理程序链,

1.最初的promise 在 1 秒内解决,
2.在.then通过记录 result(1) 调用该处理程序之后,然后返回一个值为 result * 2 的承诺。
3.之后,.then通过记录 result(2)将值传递给下一个处理程序,并返回一个结果为 * 3 的承诺。
4.最后.then通过记录 result(6)传递给最后一个处理程序的值并返回一个结果为 * 4 的承诺。

⬆ 返回顶部


64.什么是 promise.all?

Promise.all 是一个将一系列承诺作为输入(可迭代)的承诺,当所有承诺都得到解决或其中任何一个被拒绝时,它就会得到解决。例如,promise.all 方法的语法如下,

Promise.all([Promise1, Promise2, Promise3]) .then(result) => {   console.log(result) }) .catch(error => console.log(`Error in promises ${error}`))

注意:请记住,承诺的顺序(输出结果)按照输入顺序进行维护。

⬆ 返回顶部


65.promise中race方法的目的是什么?

Promise.race() 方法将返回首先解决或拒绝的承诺实例。让我们举一个race()方法的例子,其中promise2首先被解析

var promise1 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 500, 'one');
});
var promise2 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 100, 'two');
});

Promise.race([promise1, promise2]).then(function(value) {
  console.log(value); // "two" // 两个 promise 都会解决,但 promise2 更快
});

⬆ 返回顶部


66.什么是javascript中的严格模式?

严格模式是 ECMAScript 5 中的一项新功能,它允许您将程序或函数置于“严格”操作上下文中。通过这种方式,它可以防止执行某些操作并引发更多异常。文字表达式"use strict";指示浏览器在严格模式下使用 javascript 代码。

⬆ 返回顶部


67.为什么需要严格模式?

通过将“错误语法”通知为实际错误,严格模式对于编写“安全”JavaScript 很有用。例如,它消除了通过抛出错误而意外创建全局变量的情况,并且还会在分配给不可写属性、getter-only 属性、不存在的属性、不存在的变量或不存在的变量时引发错误。现有的对象。

⬆ 返回顶部


68.你如何声明严格模式?

严格模式是通过添加“use strict”来声明的;到脚本或函数的开头。
如果在脚本的开头声明,则它具有全局作用域。

"use strict";
x = 3.14; // 这将导致错误,因为 x 未声明

如果你在函数内部声明,它具有局部作用域

x = 3.14;       // 这不会导致错误。
myFunction();

function myFunction() {
  "use strict";
  y = 3.14;   // 这将导致错误
}

⬆ 返回顶部


69.双感叹号的目的是什么?

双感叹号或否定 (!!) 确保结果类型是布尔值。如果它是假的(例如 0、空、未定义等),它将是假的,否则为真。

例如,您可以使用以下表达式测试 IE 版本,

let isIE8 = false;
isIE8 = !! navigator.userAgent.match(/MSIE 8.0/);
console.log(isIE8); // returns true or false

如果您不使用此表达式,则它返回原始值。

console.log(navigator.userAgent.match(/MSIE 8.0/));  // 返回一个数组或 null

⬆ 返回顶部


70.删除运算符的目的是什么?

delete 关键字用于删除属性及其值。

var user= {name: "Haiyong", age:20};
delete user.age;

console.log(user); // {name: "Haiyong"}

⬆ 返回顶部


最近牛客在搞一个秋招同行计划,邀请大家一起记录自己的笔试,面试经历,写一篇讨论帖@周周~ 就可以得100牛币

反正不限制字数和题材,写的好的还可以拿到50京东卡、周边、一些技术书等,大家冲起来!

活动详情:https://www.nowcoder.com/link/bgzz2023

最后,不要忘了❤或📑支持一下哦,你的支持是海海更新的动力!关注我后面会持续分享面试经验 & 前端相关的专业知识。

最后祝大家都能找到满意的实习和 offer!

4条回帖

回帖
加载中...
话题 回帖