JavaScript面试常见问题解析
需积分: 0 125 浏览量
更新于2024-08-03
收藏 5KB MD 举报
"JavaScript面试题.md"
这篇面试题集涵盖了JavaScript中的多个核心概念,包括变量定义、数据类型、运算符优先级以及作用域等。以下是对每个问题的详细解释:
### 1. 延迟加载js
在HTML中,`<script>`标签可以带有`defer`或`async`属性来实现JavaScript的延迟加载。
- `defer`属性用于告诉浏览器脚本应该在文档解析完成后,但在`DOMContentLoaded`事件触发之前执行。这意味着所有带有`defer`的脚本会按照它们在文档中的顺序执行。
- `async`属性则使得脚本可以异步加载,即不阻塞页面渲染,脚本一旦加载完成就会立即执行,执行顺序不能保证。
### 2. 数据类型的判断
- `NaN`(Not-a-Number)不是一个特定的数值,但它的数据类型是`number`。
- `undefined`是JavaScript中的一个预定义值,表示变量未定义或函数返回无值,其类型为`undefined`。
- `null`虽然通常用来表示“无”或“空”,但它在JavaScript中被视为特殊的`object`类型。
### 3. 运算符优先级和类型转换
- `true + 1`的结果是`2`,因为布尔值`true`在加法运算中被转换为`1`。
- `'name' + true`的结果是`"nametrue"`,因为在字符串与任何其他类型相加时,其他类型将被转换为字符串。
- `undefined + 1`的结果是`NaN`,因为`undefined`不能参与数值运算。
### 4. 异步操作与闭包
这个例子展示了异步处理(setTimeout)和作用域的问题。由于`setTimeout`是异步的,它会在`for`循环结束后才执行,导致三个回调函数共享同一个`i`的值,因此都输出`3`。
### 5. 变量提升(Hoisting)
在`test`函数内部,`bar`在函数体内的声明被提升了到函数顶部,因此在第一次`console.log(bar)`时,`bar`尚未被赋值,输出`undefined`。之后的`bar`被重新赋值为`2`,所以第二次`console.log(bar)`输出`2`。
### 6. 函数声明与函数表达式
在这个例子中,尽管函数名为相同,但函数表达式(`var foo = function() {...}`)不会覆盖函数声明(`function foo() {...}`)。因此,调用`foo()`会执行函数声明中的代码,输出`1`。
### 7. 作用域与闭包
在`c`函数中,`a`函数访问了外部作用域的`b`变量,并在其内部重新定义了一个同名变量。由于JavaScript的作用域链,`a`函数内的`console.log(b)`首先查找本地`b`,找不到则向上搜索,因此第一个`console.log(b)`输出外部的`1`,而第二个`console.log(b)`输出内部的`2`。最后,外部的`console.log(b)`仍然输出`1`,因为`a`函数内部的改变不会影响外部作用域的`b`。
这些面试题旨在考察开发者对JavaScript基本特性的理解,包括数据类型、作用域、变量提升、类型转换以及异步处理等方面的知识。熟悉并掌握这些概念对于JavaScript开发至关重要。
2021-10-30 上传
2024-03-20 上传
2021-09-15 上传
2023-02-21 上传
岁碎难相见
- 粉丝: 35
- 资源: 1
最新资源
- target-deep-learning:正在进行中的有关神经网络以进行图像异常检测的项目
- 易语言-置托盘图标和弹出托盘菜单程序
- 基于三菱PLC的煤质采样程序.rar
- FunAdmin V1.0 开源管理系统
- 自动CAR-Amit-
- describe-number:在Emacs中任意描述任意数量的数字
- simple_dashboard
- react-parallax:一个用于视差效果的React组件
- SaveVSUMLDiagramsToImageFile:针对Visual Studio 2013 Ultimate和Visual Studio 2015 Enterprise的MSDN“如何:将UML图导出到图像文件”的实现
- CS323-CollinEthanProject:Collin Umphrey和Ethan Monnin-CS323类项目
- 367DataScience
- qa-form-helper:用于 Web 表单 QA 的自动填充书签
- 马丁-福勒-分解第二
- LiteMap Toolbar-crx插件
- 经典三菱PLC带两伺服用于焊接机器程序.rar
- zipkin-rabbit-swagger