那些陌生又熟悉的前端面试问题

还有不少小伙伴过年后需要跳槽,又要开始刷前端面试题了!会不会有一种错觉,觉得这个面试题我很熟悉,但是不知道怎么做?还是有答案不知道对不对?或者可以使用编辑器运行正确答案,但是不知道如何获取。你中招了吗?

JavaScript语言是弱类型语言,有很多类型错误,所以ES6引入了严格模式的概念。

如果不加‘使用严格’,正常模式就是非严格模式。

严格模式

在js文件顶部添加' use strict '属于严格模式,在函数内部也可以指定严格模式。

严格模式为js定义了不同的解析和执行模型。在严格模式下,ECMAScipt 3中一些令人费解的不确定的行为会被处理,对于不安全的操作会抛出异常。“使用严格”将告诉浏览器引擎它可以切换到严格模式。

严格模式和非严格模式的区别

常见测试问题:

试试这个测试。你能做到吗?

要说js的深度复制,就不得不提js的两种数据类型:基本数据类型和引用类型。

基本数据类型的变量名和值存储在堆栈中,引用类型的变量名存储在堆栈中,值存储在堆中。由于存储方式不同,它们的复制方式也不同。

估价

当给基本数据类型赋值时,创建的基本数据类型会在内存中开辟一个新的空间来复制值,而引用类型使用地址存储。如果一个引用数据直接赋给另一个数据,就相当于直接把它存储值的地址给了另一个变量,所以改变一个的值也会改变另一个的值。

暗抄的定义是什么?

假设有两个变量,P和copyP。如果copyP复制了P,我们可以通过修改copyP来观察P是否发生了变化。如果随它而变,那就是浅薄的复制。如果没有变化,则表示深度复制。

复制一个基本类型的时候,会打开新的内存空间,所以两个值是相互独立的。复制引用类型时,取决于它是复制的内存地址还是新堆。所以深度复制主要是针对引用类型的数据。

浅层复制的常见方式:

1,直接分配

2、对象分配

深度复制的常见方式:

引用数据最常用的类型是对象和数组,引用数据内部的数据也可以多样化。在进行深度复制时,也要根据数据结构进行合适的复制方法。具体的深层拷贝方法如下:

1,数组只包含基本数据类型。

2.该对象只包含基本数据类型。

3.当对象或数组包含一个或多个引用数据类型时。

深拷贝和浅拷贝的常见应用主要是增加、删除和修改数据的操作。

大昌笔测试题:

这是一个关于这一点的面试问题。接下来,我们来说说这是怎么分的。

该对象由基于运行时函数的执行环境绑定:

看了上面的解释,就可以做上面的面试题了。

如何改变这个方向?

Call、bind、apply都是用来改变这个指向的,也就是改变函数执行时的上下文。

修改以上面试问题:

调用、绑定、应用改变了这个方向,最大的作用就是实现代码复用。

至于调用、绑定、应用的区别,你可以自己去发现。

有了上面的手表,事情就变得简单了!

关系运算符运算时,不同类型的值会自动转换成同一类型的值,然后

1.当一边是字符串,另一边是数字时,字符串调用Number方法将字符串转换为数字,所以:

2.如果两边都是字符串,则根据字符串的unicode编码进行转换,因此:

3.比较字符串条目时,先比较第一位。如果不相等,则直接得到结果。如果第一项相等,第二项将继续用于比较。

4.转换为布尔值时全部为假的类型有:undefined、null、0、NaN、false和“”

5.NaN代表一个非数,但这个非数也是不一样的,所以NaN不等于NaN,两个NaN永远不可能相等。

6.关系运算有一个数值,另一个值也转换成数字类型。

7.如果有逻辑运算,就把其他数据类型转换成布尔值。

8.直接比较两个空数组。数组地址不同,所以不相等。

评论区可以留下最近想学的知识点,或者面试题型!