2024年最新零基础入门前端可以快速掌握的 javascript 基础(1),面试时有哪些技巧

常用的JavaScript设计模式

  • 单体模式

  • 工厂模式

  • 例模式

函数

return res;

} else {

return obj;

}

}

6.手写 bind

Function.prototype.bind_y = function (obj) {

let that = this;

return function (…args) {

that.apply(obj, args);

};

};

7.手写 apply

Function.prototype.apply_y = function (obj) {

return function (…args) {

this.bind(obj)(args);

};

};

8.手写 call

Function.prototype.call_y = function (obj) {

return function (…args) {

this.bind(obj)(…args);

};

};

9.this

// 普通函数中,this指向调用函数的对象,在调用时绑定

var name = “y”;

var cat = { name: “miao” };

function a() {

console.log(this.name);

}

a(); // y

a.apply(cat); // miao

// 箭头函数中,this继承自父函数,在声明时绑定

var name = “y”;

var cat = { name: “miao” };

var a = () => {

console.log(this.name);

};

a(); // y

a.apply(cat); // y

10.作用域

// 变量声明提升

console.log(a); // 1

console.log(b); // Uncaught ReferenceError: b is not defined

console.log©; // Uncaught ReferenceError: c is not defined

var a = 1;

let b = 2;

const c = 3;

// 函数声明提升

console.log(y); // ƒ y(){console.log(“nice to meet you!”)}

function y() {

console.log(“nice to meet you!”);

}

11.数据类型 基本类型存于栈内存,引用类型存于堆内存,从存取频率上可理解。

  • 基本类型

Number、 Boolean、String、Undefined、Null、BigInt、Symbol

  • 引用类型

Object、Array、Function、Date、RegExp

typeof 方法可以判断基本类型和函数;instanceof 方法可以判断引用类型;Object.prototype.toString.call()方法可以精确判断所有数据类型。

12.常用数组&字符串& 正则方法

// 字符串方法

“abc”.split(“”);

“abc”.indexOf(“a”);

“abc”.charAt(0);

“abc”.replace(“a”, 1);

“abc”.match(“a”);

“abc”.matchAll(“a”);

// 数组方法

[1, 2, 3].join(“”);

[1, 2, 3].indexOf(1);

[1, 2, 3].findIndex((item) => item > 1);

[(1, 2, 3)][0];

[1, 2, 3].reduce((acc, item, index, arr) => {

return acc + item;

});

[1, 2, 3].map((item, index) => {});

[1, 2, 3].forEach((item, index) => {});

[1, [2, 3]].flat(2);

[1, 2, 3].fill(“a”);

[1, 2, 3].includes(1);

// 正则方法

/[a-z]/.test(“abc”);

/([a-z])(?!\1)([a-z])/.exec(“aac”);

13.排序

// sort

[1, 3, 5, 2, 4, 6].sort((a, b) => {

return a - b;

});

// 快速排序

function quickSort(arr) {

if (arr.length < 2) return arr;

let left = [];

let right = [];

let flag = arr.splice(arr.length - 1, 1)[0];

for (let i = 0; i < arr.length; i++) {

if (arr[i] > flag) {

right.push(arr[i]);

} else {

left.push(arr[i]);

}

}

return quickSort(left).concat(flag, quickSort(right));

}

// 冒泡排序

function bubbleSort(arr) {

for (let i = 0; i < arr.length - 1; i++) {

for (let j = i + 1; j < arr.length; j++) {

if (arr[i] > arr[j]) {

[arr[i], arr[j]] = [arr[j], arr[i]];

}

}

}

return arr;

}

// 选择排序

function selectSort(arr) {

let min = 0;

for (let i = 0; i < arr.length - 1; i++) {

min = i;

for (let j = i + 1; j < arr.length; j++) {

if (arr[j] < arr[min]) {

min = j;

}

}

[arr[i], arr[min]] = [arr[min], arr[i]];

}

return arr;

}

14.去重

// new Set

new Set([1, 2, 1, 2]);

// 遍历

function uniq(arr) {

for (let i = 0; i < arr.length - 1; i++) {

for (let j = i + 1; j < arr.length; j++) {

if (arr[i] === arr[j]) {

arr.splice(j, 1);

i–;

}

}

}

return arr;

}

15.拍平数组

// flat

[1, [1, [3, 4]]].flat(3);

// 递归

function flat_y(arr) {

let res = [];

for (let i = 0; i < arr.length; i++) {

if (Array.isArray(arr[i])) {

res = res.concat(flat_y(arr[i]));

} else {

res.push(arr[i]);

}

}

return res;

}

16.深拷贝

function deepClone_y(obj, map = new Map()) {

let type = Object.prototype.toString.call(obj);

if (

[

“[object String]”,

“[object Number]”,

“[object Undefined]”,

最后

编程基础的初级开发者,计算机科学专业的学生,以及平时没怎么利用过数据结构与算法的开发人员希望复习这些概念为下次技术面试做准备。或者想学习一些计算机科学的基本概念,以优化代码,提高编程技能。这份笔记都是可以作为参考的。

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

名不虚传!字节技术官甩出的"保姆级"数据结构与算法笔记太香了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值