没有合适的资源?快使用搜索试试~ 我知道了~
JavaScript 80道面试题和答案.docx
0 下载量 13 浏览量
2025-06-10
09:36:29
上传
评论
收藏 41KB DOCX 举报
温馨提示
内容概要:本文档《JavaScript 80道面试题和答案》详细解答了JavaScript中常见且重要的概念和问题。内容涵盖undefined与null的区别、逻辑运算符(&&、||)的使用、DOM的概念及其操作、事件传播(包括事件冒泡和事件捕获)、事件处理方法(event.preventDefault()和event.stopPropagation())、比较运算符(==和===)的区别、对象比较、提升、作用域(全局作用域、函数作用域、块作用域)、闭包、虚值判断、严格模式、“this”的指向、原型、IIFE(立即执行函数表达式)、Function.prototype.apply、Function.prototype.call和Function.prototype.bind的使用等。这些问题的答案不仅解释了概念,还提供了代码实例进行说明,有助于深入理解JavaScript的工作机制。 适合人群:具备一定JavaScript编程基础的前端开发人员,特别是准备面试的开发者。 使用场景及目标:①帮助开发者巩固基础知识,理解JavaScript的核心概念;②为面试做准备,提供常见问题的解答和代码示例;③通过实际代码示例加深对语言特性的理解,提高编程能力。 其他说明:文档中的问题和答案设计得非常实用,不仅涵盖了理论知识,还结合了实际开发中的应用场景。对于想要深入了解JavaScript机制和提高编程技能的开发者来说,这是一个非常有价值的参考资料。建议在阅读过程中动手实践代码示例,以加深理解和记忆。
资源推荐
资源详情
资源评论

















undefined 和 null 有什么区别?
在理解 undefined 和 null 的差异之前,我们先来看看它们的相似点。
它们都属于 JavaScript 的 7 种基本类型。
let primitiveTypes =
['string','number','null','undefined','boolean','symbol','bigint'];
它们是属于 falsy 值类型,可以使用 Boolean(value)或!!value 将其转换为布尔值时,值为
false。
console. log(!!null);//false
console. log(!!undefined);//false
console. log(Boolean(null));//false
console. log(Boolean(undefined));//false
接着来看看它们的区别。
undefined 是未指定特定值的变量的默认值,或者没有显式返回值的函数,如:console.
log(1),还包括对象中不存在的属性,这些 IS 引擎都会为其分配 undefined 值。
let_thisIsUndefined;
const doNothing=() => {};
const someObj ={
a :"ay",
b:"bee",
c :"si"
};
console. log(_thisIsUndefined);// undefined
console. log(doNothing());//undefined
console. log(someObj["d"]);//undefined

null 是『不代表任何值的值』。null 是已明确定义给变量的值。在此示例中,当 fs.
readFile 方法未引发错误时,我们将获得 null 值。
fs. readFile('path/to/file',(e,data) => {
console. log(e);//当没有错误发生时,打印 null
if(e){
console. log(e);
}
console. log(data);
});
在比较 null 和 undefined 时,我们使用==时得到 true,使用===时得到 false:
console. log(null ==undefined);//true
console. log(null ===undefined);//false
&&运算符能做什么
&&也可以叫逻辑与,在其操作数中找到第一个虚值表达式并返回它,如果没有找到任
何虚值表达式,则返回最后一个真值表达式。它采用短路来防止不必要的工作。
console. log(false &&1&&[]);//false
console. log(""&&true &&5);//5
使用 if 语句
const router:Router=Router();
router. get('/endpoint',(req:Request,res:Response)=>{
let conMobile:PoolConnection;
try{
//do some db operations
}catch(e){
if(conMobile){

conMobile. release();
}
}
} );
使用&&操作符
const router:Router =Router();
router. get('/endpoint',(req:Request,res:Response)=>{let conMobile:PoolConnection;
try{
//do some db operations
}catch(e){
conMobile &&conMobile. release()
}
});
||运算符能做什么
||也叫或逻辑或,在其操作数中找到第一个真值表达式并返回它。这也使用了短路来防
止不必要的工作。在支持 ES6 默认函数参数之前,它用于初始化函数中的默认参数值。
console. log(null||1 ||undefined);//1
function logName(name){
var n =name ||"Mark";
console. log(n);
﹞
logName();//"Mark"
使用+或一元加运算符是将字符串转换为数字的最快方法吗?

根据 MDN 文档,+是将字符串转换为数字的最快方法,因为如果值已经是数字,它不
会执行任何操作。
DOM 是什么?
DOM 代表文档对象模型,是 HTML 和 XML 文档的接口(API)。当浏览器第一次读取(解
析)HTML 文档时,它会创建一个大对象,一个基于 HTML 文档的非常大的对象,这就
是 DOM。它是一个从 HTML 文档中建模的树状结构。DOM 用于交互和修改 DOM 结
构或特定元素或节点。
假设我们有这样的 HTML 结构:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"content="width=device-width,initial-scale=1.0">
<meta http-equiv="X-UA-Compatible"content="ie=edge">
<title>Document Object Model</title>
</head>
<body>
<div>
<p>
<span></span>
</p>
<label></label>
<input>
</div>
</body>

</html>
等价的 DOM 是这样的:
JS 中的 document 对象表示 DOM。它为我们提供了许多方法,我们可以使用这些方法
来选择元素来更新元素内容,等等。
什么是事件传播?
当事件发生在 DOM 元素上时,该事件并不完全发生在那个元素上。在“冒泡阶段”中,
事件冒泡或向上传播至父级,祖父母,祖父母或父级,直到到达 window 为止;而在
“捕获阶段”中,事件从 window 开始向下触发元素事件或 event. target。
事件传播有三个阶段:
1、捕获阶段事件从 window 开始,然后向下到每个元素,直到到达目标元素。
2、目标阶段事件已达到目标元素。
3、冒泡阶段事件从目标元素冒泡,然后上升到每个元素,直到到达 window。什么是
事件冒泡?
当事件发生在 DOM元素上时,该事件并不完全发生在那个元素上。在冒泡阶段,事件
冒泡,或者事件发生在它的父代,祖父母,祖父母的父代,直到到达 window 为止。
假设有如下的 HTML 结构:
<div class="grandparent">
<div class="parent">
<div class="child">1</div>
</div>
</div>
对应的 JS 代码:
function addEvent(el,event,callback,isCapture=false){
if(!el ||!event ||!callback ||typeof callback !=='function')return;
if(typeof el==='string'){
剩余30页未读,继续阅读
资源评论



程序员佳倩
- 粉丝: 1338
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (源码)基于Spring Boot框架的物业管理系统.zip
- (源码)基于Spring Boot和MySQL的医院挂号系统.zip
- (源码)基于Spring Boot和MyBatis Plus的社区管理系统.zip
- (源码)基于Java Spring框架的中小型企业财务管理系统.zip
- (源码)基于Java ssm框架的高校餐厅食品留样管理系统.zip
- (源码)基于Spring框架和MyBatis Plus的校园综合管理系统.zip
- (源码)基于Spring框架的智能社区管理系统.zip
- (源码)基于Java和Spring框架的奖助学金管理系统后端接口.zip
- (源码)基于Java和SSM框架的微信小程序电影交流平台.zip
- 2023年职业技能实训形成性考核计算机应用基础答案.doc
- 电子商务配送中心项目可行性报告范本.doc
- 国家开放大学电大专科《电子商务概论》期末试题4.docx
- 《C++程序设计》期末考试及答案.doc
- MATLAB2009-1-4降落伞(1).doc
- 2023年sql一些笔试题.docx
- (完整版)-JAVA期末考试试卷及答案-推荐文档.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
