大家好,我是 CUGGZ。 今天来分享 V8 引擎执行 JavaScript 的原理和垃圾回收机制。 JS 代码执行过程在说V8的执行JavaScript代码的机制之前,蓝狮注册开户我们先来看看编译型和解释型语言的区别。 (1)编译型语言和解释型语言我们知道,机器是不能直接理解代码的。所以,在执行程序之前,需要将代码翻译成机器能读懂的机器语言。按语言的执行流程,可以把计算机语言划分为编译型语言和解释型语言: 编译型语言:在代码运行前编译器直接将对应的代码转换成机器码,运行时不需要再重新翻译,直接可以使用编译后的结果 ...
蓝狮注册登陆为什么 Vue2 this 能够直接获取到 data 和 methods ?
在平时使用vue来开发项目的时候,对于下面这一段代码,我们可能每天都会见到: const vm = new Vue({data: {name: ‘我是pino’,},methods: {print(){console.log(this.name);}},});console.log(vm.name); // 我是pino蓝狮注册登陆vm.print(); // 我是pino但是我们自己实现一个构造函数却实现不了这种效果呢? function Super(options){}const p = new Super({data: {name: ‘pino’},methods: {print(){console.log(this.name);}}});console.log(p.name); // undefinedp.print(); // p.print is not a fu ...
蓝狮注册登陆用typescript类型来实现快排
写在前面 本文执行环境typescript,版本4.7.4 元组快排能否将元组 [3, 1, 2, 4] 通过泛型转换成 [1, 2, 3, 4] 如何实现快排? • 遍历元组 • 元组每个值的大小比较 • 每次比较中挑选出符合条件的值,也就是实现 Filter 实现逻辑数字的大小比较在typescript类型中没有比较符,蓝狮注册开户那如何判断 5 和 6 谁更大? typescript类型不知道,所以需要找到在typescript中已经存在的递增数列,通过这个数列来实现 怎么理解呢 类似有 张三 和 李四 两个人,要比较他们谁的位置靠前,需要有一个他们排队的 ...
蓝狮注册登陆为什么说:JavaScript 模块中的默认导出很糟糕
我们知道,JavaScript 模块有两种方法来定义导出:默认导出和命名导出。在本节中,我们来看下为什么默认导出是一种糟糕的做法,会导致不好的开发体验。 下面,我们看下例子,假设,我们有一个模块,蓝狮注册开户它同时包含命名导出和默认导出,如下所示: export const add = (a, b) => a + b; export default subtract = (a, b) => a – b;在导入使用之前,这里有一个问题,它可能会影响到我们的开发体验。为什么 subtract 是默认的,而 add 是一个命名的导出? ps:我举的例子,可能有点刻意,但随着模 ...
蓝狮注册登陆图解JS中的事件循环
1、js单线程,并非指js只有一个线程,而是同一时刻只能有一个线程在工作。 2、js中,主线程之外,还有其他线程,比如事件循环线程,定时器触发线程,http异步线程, 浏览器事件线程。 3、在js主线程中,分为两个子线程,js引擎线程,GUI渲染线程。这两个线程是互斥的,同一时刻只能执行一个,要么执行js,要么渲染html 4、任务队列中,分为宏任务微任务。每次执行任务队列时,先执行微任务,再执行宏任务。 5、通常宏任务指 setTimeout,setInterval,XMLHttprequest,fetch等回调。 微任务指 Promise,MutationObse ...
蓝狮注册登陆Webpack与Vite热更新差异对比
随着项目的日渐迭代,项目整体的代码量也会越来越多,从而导致项目体积越来越大;在webpack时代,很多人会对历史项目(巨型项目)感到头疼,因为往往巨型项目在本地开发调试的时候会因为本地代码的修改触发HMR热更新重载页面,然而这一过程在Webpack的运行机制中显得很慢,并且是随着项目越大,热更新的速度也会越慢; Webpack热更新慢的问题可以通过 babel-plugin-dynamic-import-node 插件来得到明显改善,或者通过手动实现动态按需加载(修改entry为当前项目中需要编译的部分或模块)亦可大幅提升热更新速度; 热更新构 ...
蓝狮注册登陆在 Git 中如何配置用户信息
大家好,我是前端西瓜哥。 最近买了台新的笔记本,重新装了一些软件,这次就说说怎么在 git 中配置用户信息吧。 当我们安装了 git 后,一件非常重要的事情就是配置我们的用户名和邮箱地址,因为我们提交代码到远端服务器需要通过它们来得知提交者是谁。 查看配置列表在配置用户信息前,我们需要确定自己是否已配置了用户信息。 我们先查看所有的配置: git config –list如果在一个 git 仓库下输入这个命令,蓝狮注册登陆你会得到类似下面的内容: credential.helper=osxkeychaincore.repositoryformatve ...
蓝狮注册开户实现数组扁平化的六种方式
在日常的开发中,我们经常会需要将数组做扁平化处理,以方便我们的开发,那么如何实现数组扁平化呢? 首先我们先了解一下数组扁平化的应用场景,数组扁平化一般在一些多维数组的应用中会出现,因为操作多维数组会较为麻烦,因此将多维数组扁平化变为一维数组后,蓝狮注册将大大简化我们对数组的操作,这一节我们就一起来学习一下关于数组扁平化的 6 种方式吧! 先思考首先,我们还是先带着问题来学习,问题如下: 如何通过最普通的方法来解决数组扁平化问题?ES6 中是否有一些高级的方法能够直接实现数组扁平化? 数 ...
蓝狮注册开户JavaScript 逻辑且(&&)和逻辑或(||)的妙用
简单运用逻辑且(&&):左右必须都满足 true 才返回 true;逻辑或(||):左右其中一个满足 true 就返回 true。 这样简单的运用是整体返回一个布尔值,蓝狮注册开户适合在语句判断的时候用: let user = localStorage.getItem(“user”); if (user && user.age > 10) {// …}当 user 存在时(即 true),且 user 的 age 字段大于 10,蓝狮注册if语句得到的布尔值才是 true,第一个条件句才执行。 进阶运用上面都是逻辑且和逻辑或的简单使用,其实它们大有用处,还能简化代码。运算符操作的对象 ...
蓝狮注册开户简单理解 JavaScript 的词法作用域
前言关于作用域的有关知识点有全局作用域、局部作用域、函数作用域、块级作用域、词法作用域、作用域链。 作用域作用域就像是一个教室,上课时教室里面的人互相可见,蓝狮注册开户A 教室里的人不可以看见 B 教室里的人。作用域决定了代码生效的区域以及资源(变量、函数)可见的区域。 function fun() {let a = 20;}(); console.log(a); // Uncaught ReferenceError: a is not defined无法获得fun函数中定义的变量a。 全局作用域全局作用域的范围比其他的作用域的范围更大,蓝狮注册关系就像是一切 JavaScript 对象 ...