Web前端架构师教你如何突破瓶颈,【JavaScript高级3,2024前端常见面试题分享

  1. apply经常跟数组有关系. 比如借助于数学对象实现数组最大值最小值

  2. bind 不调用函数,但是还想改变this指向. 比如改变定时器内部的this指向.

三、严格模式

=====================================================================

3.1 什么是严格模式


JavaScript 除了提供正常模式外,还提供了严格模式(strict mode)。ES5 的严格模式是采用具有限制性 JavaScript变体的一种方式,即在严格的条件下运行 JS 代码。严格模式在 IE10 以上版本的浏览器中才会被支持,旧版本浏览器中会被忽略。

严格模式对正常的 JavaScript 语义做了一些更改:

1.消除了 Javascript 语法的一些不合理、不严谨之处,减少了一些怪异行为。

2.消除代码运行的一些不安全之处,保证代码运行的安全。

3.提高编译器效率,增加运行速度。

4.禁用了在 ECMAScript 的未来版本中可能会定义的一些语法,为未来新版本的 Javascript 做好铺垫。比如一些保留字如:class,enum,export, extends, import, super 不能做变量名;

3.2 开启严格模式


严格模式可以应用到整个脚本或个别函数中。因此在使用时,我们可以将严格模式分为为脚本开启严格模式和为函数开启严格模式两种情况。

  • 情况一 :为脚本开启严格模式

  • 有的 script 脚本是严格模式,有的 script 脚本是正常模式,这样不利于文件合并,所以可以将整个脚本文件放在一个立即执行的匿名函数之中。这样独立创建一个作用域而不影响其他

script 脚本文件。

(function (){

//在当前的这个自调用函数中有开启严格模式,当前函数之外还是普通模式

“use strict”;

var num = 10;

function fn() {}

})();

//或者

  • 情况二: 为函数开启严格模式

  • 要给某个函数开启严格模式,需要把“use strict”; (或 ‘use strict’; ) 声明放在函数体所有语句之前。

function fn(){

“use strict”;

return “123”;

}

//当前fn函数开启了严格模式

3.2 严格模式中的变化


  1. 严格模式下变量规定:

CleanShot 2020-08-12 at 16.26.11@2x

  1. 严格模式下this指向变化:

CleanShot 2020-08-12 at 16.27.08@2x

  1. 严格模式下函数变化:CleanShot 2020-08-12 at 16.28.02@2x

严格模式对 Javascript 的语法和行为,都做了一些改变。

‘use strict’

num = 10

console.log(num)//严格模式后使用未声明的变量


var num2 = 1;

delete num2;//严格模式不允许删除变量


function fn() {

console.log(this); // 严格模式下全局作用域中函数中的 this 是 undefined

}

fn();


function Star() {

this.sex = ‘男’;

}

// Star();严格模式下,如果 构造函数不加new调用, this 指向的是undefined 如果给他赋值则 会报错.

var ldh = new Star();

console.log(ldh.sex);


setTimeout(function() {

console.log(this); //严格模式下,定时器 this 还是指向 window

}, 2000);

严格模式更详细的说明

四、高阶函数

=====================================================================

高阶函数是对其他函数进行操作的函数,它接收函数作为参数或将函数作为返回值输出。

img2

以上fn 就是一个高阶函数,函数也是一种数据类型,同样可以作为参数,传递给另外一个参数使用。最典型的就是作为回调函数。同理函数也可以作为返回值传递回来;

五、闭包

===================================================================

5.1 变量的作用域复习


变量根据作用域的不同分为两种:全局变量和局部变量。

  1. 函数内部可以使用全局变量。

  2. 函数外部不可以使用局部变量。

  3. 当函数执行完毕,本作用域内的局部变量会销毁。

5.2 什么是闭包


闭包(closure)指有权访问另一个函数作用域中变量的函数。简单理解就是 ,一个作用域可以访问另外一个函数内部的局部变量。

在这里插入图片描述

5.3 闭包的作用


作用:延伸变量的作用范围。

function fn() {

var num = 10;

function fun() {

console.log(num);

}

return fun;

}

var f = fn();

f();

六、递归

===================================================================

6.1 什么是递归


**递归:**如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是递归函数

📣**注意:**递归函数的作用和循环效果一样,由于递归很容易发生“栈溢出”错误(stack overflow),所以必须要加退出条件return。❗❗❗

6.2 利用递归求1~n的阶乘


代码示例如下:

//利用递归函数求1~n的阶乘 1 * 2 * 3 * 4 * …n

function fn(n) {

if (n == 1) { //结束条件

return 1;

}

return n * fn(n - 1);gehwwwwwwdddddddddddddddddd-

}

console.log(fn(3));

6.3 利用递遍历数据


众所周知,前端会经常性的进行成后台请求数据,将数据渲染到页面上,所以对数据的处理十分重要,下面学习利用递归进行遍历数据;

代码示例如下:

// 我们想要做输入id号,就可以返回的数据对象

var data = [{

id: 1,

name: ‘家电’,

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

…(img-0M8bUvFv-1712270235432)]

[外链图片转存中…(img-3WH2kD2F-1712270235433)]

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 14
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值