本文正在参与【[ 面霸养成记 ] 】 征文活动,一起来聊聊校招的那些事吧,牛客周边和百元京东卡等你来领~
写在前面的
大家好,我是 海拥 ,专注于前端知识的分享。今天将给大家带来的是 400 个最常见的 JavaScript 面试问答第七部分。接下来我会持续更新(争取日更,也可能每周3-5篇),每小节大概 10 道题左右,总共会有 400 多道。
大家一定要记得点赞收藏呀!!!
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条回帖
回帖