大厂前端面试题目|# 前端基础知识
HTML CSS JS HTTP 等基础知识是前端面试的第一步,基础知识不过关将直接被拒。本章将通过多个面试题,讲解前端常考的基础知识面试题,同时复习一些重要的知识点。
## 为何要考察
扎实的前端基础知识,是作为前端工程师的根本。基础知识能保证最基本的使用,即招聘进来能干活,能产出。
## 考察的重点
- HTML CSS JS 基础知识
- HTTP Ajax 基础知识
- Vue 等框架的基本应用
## 注意事项
不会从 0 基础讲起,基础不熟悉可以向讲师提问
## 看几个面试题
列几个代表性的面试题,参考视频。
在JavaScript编程中,严格模式是一种不同的代码执行方式,它提供了一种更为严格的语法规则。其目的是帮助开发者发现代码中的错误,并避免一些不良的编程实践。在前端面试中,考察应聘者对严格模式的了解是一个常见的环节。以下是关于JS严格模式和非严格模式的相关知识点。
### 严格模式的概念和设计初衷
JavaScript设计之初存在许多不严谨的地方,比如未声明的变量可以直接赋值使用(例如`n=100`),这在程序中可能会引入难以预料的错误和安全隐患。严格模式(Strict Mode)的引入,就是为了规避这类问题。它通过抛出更多的错误来帮助开发者写出更安全、更优质的代码。
### 开启严格模式的方法
要在JavaScript代码中开启严格模式,你需要在代码或函数的起始处加入`'use strict';`指令。这可以应用于整个脚本或单个函数中。
```javascript
// 开启全局严格模式
'use strict';
var n = 100; // 这行代码会抛出错误,因为n没有声明
function fn() {
// 开启函数的严格模式
'use strict';
// 函数体内的代码遵循严格模式规则
}
```
### 严格模式的不同之处
严格模式相对于非严格模式有很多差异,以下是一些主要的方面:
#### 全局变量必须声明
在严格模式下,未声明的变量赋值会抛出错误。这有助于避免意外创建全局变量,可能导致命名冲突和潜在的bug。
```javascript
'use strict';
n = 100; // ReferenceError: n is not defined
```
#### 禁止使用`with`语句
`with`语句在严格模式下是不允许使用的,它通常会改变代码的上下文,这可能导致代码难以理解,增加bug的风险。
```javascript
'use strict';
var obj = { x: 10 };
with(obj) {
// SyntaxError: Strict mode code may not include a with statement
console.log(x);
}
```
#### 创建eval作用域
严格模式下,`eval`函数执行的代码创建了一个新的作用域,而不是将变量添加到包含它的函数或全局作用域。
```javascript
'use strict';
var x = 10;
eval('var x = 20; console.log(x);'); // 输出20
console.log(x); // 输出10
```
#### 禁止this指向全局作用域
在非严格模式下,未绑定的`this`默认指向全局对象(在浏览器中是`window`)。但在严格模式下,`this`的值会是`undefined`。
```javascript
'use strict';
function fn() {
console.log('this', this); // undefined
}
fn();
```
#### 函数参数不能重名
在严格模式中,函数参数不允许重名,而在非严格模式下,只有最后一个参数会覆盖前面的同名参数。
```javascript
'use strict';
function fn(x, x, y) { // Uncaught SyntaxError: Duplicate parameter name not allowed in this context
return;
}
fn();
```
### 严格模式下的其他变化
除了上述已经提到的点外,严格模式还带来了很多其他的变化:
- 无法删除变量和对象属性。
- 函数的参数名必须唯一。
- 八进制字面量和转义字符必须用单引号。
- 禁止使用八进制整数。
- 禁止使用特定的语法构造。
- 对象字面量中不能有重名属性。
### 注意事项
- 在生产环境的代码中,建议总是开启严格模式,以确保代码的健壮性和安全性。
- 严格模式不适用于所有浏览器,对于不支持的环境,这些指令会被忽略,不会影响代码的执行。
- 严格模式主要影响代码执行的最外层作用域和函数作用域,不会影响eval内部或内部函数的作用域。
通过了解和运用严格模式,前端开发者可以更好地遵守编程的最佳实践,同时也能提升代码的可读性和可维护性。在前端面试中,能够熟练地说明和使用严格模式,无疑会为面试者加分。