SF
学习进阶
学习进阶
注册登录
关注博客
注册登录
主页
关于
RSS
《重学前端》学习笔记Day113
豪猪
2023-07-16
阅读 4 分钟
146
常见到的section、nav、p。语义是我们说话表达的意思,多数情况下语义都是由文字承载的。语义类标签则是纯文字的补充。为什么要用语义? 很多前端工程师写起代码,通常是div和span走天下。按正确的套路,应该说是不好的,但是在很多情况下,答案肯定是好。 因为在实际业务场景,“软件界面”多于“富文本”,而软件界面里的...
《重学前端》学习笔记Day112
豪猪
2023-07-15
阅读 2 分钟
101
JavaScript语法:新加入的**运算符,哪里有些不一样呢?更新表达式 UpdateExpression左值表达式搭配 ++ -- 运算符,可以形成更新表达式。 {代码...} 一元运算表达式 UnaryExpression {代码...} 更新表达式搭配了一个一元表达式乘方表达式 ExponentiationExpression乘方表达式也是由更新表达式构成的。它使用**号。 {代码...
《重学前端》学习笔记Day111
豪猪
2023-07-14
阅读 2 分钟
112
表达式语句实际上就是一个表达式,它是由运算符连接变量或者直接量构成。一般表达式语句要么是函数调用,要么是赋值,要么是自增,自减,否则表达式的计算结果没有任何意义。但在语法上并没有限制。
《重学前端》学习笔记Day110
豪猪
2023-07-13
阅读 2 分钟
201
JavaScript语法:你知道哪些JavaScript语句?普通语句声明语句语句块简单理解,语句块就是一对大括号。多行语句组合成一行语句。需要注意的是,语句块会产生作用域。空语句空语句就是独立的分号,没有特殊的含义。尽是作为语言的完备性的角度考虑。if语句If 语句的作用是,满足条件时执行它的内容语句,这个语句可以是一...
《重学前端》学习笔记Day109
豪猪
2023-07-12
阅读 2 分钟
470
首先,JavaScript有两种源文件,一种叫做脚本,一种叫做模块。在ES6引入模块机制,在此之前,就只有一种源文件类型(就只有脚本)。脚本可以由浏览器或者node环境引入执行,而模块只能由JavaScript用import引入执行。实际上区别在于是否包含import和export。脚本是一种兼容之前的版本的定义,在这个模式下,没有import就不...
《重学前端》学习笔记Day108
豪猪
2023-07-11
阅读 2 分钟
193
源代码结束处,不能形成完整的脚本或者模块结构,那么就自动插入分号。 {代码...} {代码...} {代码...} {代码...} no LineTerminator here 规则no LineTerminator here规则表示它所在的结构中的这一位置不能插入换行符。 {代码...} {代码...} {代码...} {代码...} {代码...} {代码...} {代码...} 不写分号要注意的情况以...
《重学前端》学习笔记Day107
豪猪
2023-07-10
阅读 2 分钟
193
词法规定了语言的最小语义单元:token,可以翻译成“标记”或者“词”。JavaScript源代码中可以这么分类:WhiteSpace 空白字符LineTerminator 换行符Comment 注释Token 词
《重学前端》学习笔记Day106
豪猪
2023-07-09
阅读 2 分钟
288
Completion Record 用于描述异常、跳出等语句执行过程。Compltetion Record表示一个语句执行完之后的结果,它有三个字段。
《重学前端》学习笔记Day105
豪猪
2023-07-08
阅读 2 分钟
466
在ES2018中,函数包含很多种类型:普通函数:使用function关键字定义的函数箭头函数:使用 => 运算符定义的函数方法:在class中定义的函数生成器函数:使用function*定义的函数类:使用class定义的类,实际上也是函数异步函数:普通函数、箭头函数和生成器函数加上async关键字
《重学前端》学习笔记Day104
豪猪
2023-07-07
阅读 1 分钟
156
在上世纪60年代,主流的编程语言是基于lambda演算的函数式编程语言,所以这个最初的闭包定义,使用了大量的函数式术语。一个不太精确的描述是“带有一系列信息的λ表达式”。对函数式语言而言,λ表达式其实就是函数。--《The Computer Journal》-《The mechanical evaluation of expressions》[applicative expression和clo...
《重学前端》学习笔记Day103
豪猪
2023-07-06
阅读 2 分钟
225
ES3和更早版本,JavaScript引擎在接收到宿主环境传递的一段代码,就直接运行了。ES6之后,JavaScript引入Promise,这样,不需要浏览器的安排,JavaScript引擎本身也可以发起任务。
《重学前端》学习笔记Day102
豪猪
2023-07-05
阅读 3 分钟
153
JavaScript最熟悉的宿主就是浏览器环境在浏览器环境中,全剧对象window上的属性,一部分来自JavaScript语言,一部分来自浏览器环境。宿主对象分为固有和用户创建两种,比如document.createElement就可以创建一些DOM对象。宿主也会提供一些构造器,比如new Image
《重学前端》学习笔记Day101
豪猪
2023-07-04
阅读 2 分钟
213
面型对象JavaScript的面向对象更类似于基于对象的语言。面对象对象对于自然事物定义:一个可以触摸或者可以看见的东西;人的智力可以理解的东西;可以指导思考或行动(进行想象或施加动作)的东西。--Grandy Booch《面向对象分析与设计》JavaScript对象的特征对象具有唯一标识性:即使完全相同的两个对象,也并非同一个...
《重学前端》学习笔记Day100
豪猪
2023-07-03
阅读 1 分钟
228
undefined表示未定义,任何变量未定义之前都是Undefined类型,值为undefined。在JavaScript的代码undefined是一个变量,而并非是一个关键字,有些代码规范要求用void 0代替undefined,防止无意被篡改。null类型也只有一个值null,表示空值,null是JavaScript的关键字,在任何代码都可以使用null关键字替换null值。
《重学前端》学习笔记Day99
豪猪
2023-07-02
阅读 1 分钟
481
文档元信息:通常是出现在head标签中的元素,文档自身的描述信息语义相关:扩展了纯文本,表达文章结构、不同语言要素的标签;语义化标签链接替换型标签:媒体表单表格
《重学前端》学习笔记Day98
豪猪
2023-07-01
阅读 1 分钟
774
前端的基础知识的欠缺技术上存在短板面临技术发展问题带来的挑战学习路径与学习方法0基础:《JavaScript高级程序设计》、《精通CSS》等书籍、MDN有了1年以上的工作经验: 本专栏
《图解 Google V8》学习笔记Day97
豪猪
2023-06-30
阅读 1 分钟
744
技术栈的非常形象的表达了学习一门手艺需要哪些知识,以及应该按照什么顺序来学。比如学习前端这门手艺,栈底到栈顶依次是浏览器架构、Web 网络、事件循环机制、JavaScript 核心、V8 的内存管理、浏览器的渲染流程、Web 安全、CSS、React、Vue、Node、构建工具链等,我们可以从栈底往栈顶一步步循序渐进地学习。如果进入...
《图解 Google V8》学习笔记Day96
豪猪
2023-06-29
阅读 1 分钟
233
内存泄漏(Memory leak),它会导致页面的性能越来越差;内存膨胀(Memory bloat),它会导致页面的性能会一直很差;频繁垃圾回收,它会导致页面出现延迟或者经常暂停。
《图解 Google V8》学习笔记Day95
豪猪
2023-06-28
阅读 1 分钟
269
由于JavaScript是运行在主线程之上的,因此,一旦执行垃圾回收算法,都需要将正在执行的JavaScript脚本暂停下来,待垃圾回收完毕后再恢复脚本执行。我们把这种行为叫做全停顿(Stop-The-World)。为了解决卡顿问题,向现有的垃圾回收器添加并行、并发和增量等垃圾回收技术。
《图解 Google V8》学习笔记Day94
豪猪
2023-05-30
阅读 3 分钟
240
首先,我们看看垃圾数据是怎么产生的。无论是使用什么语言,我们都会频繁地使用数据,这些数据会被存放到栈和堆中,通常的方式是在内存中创建一块空间,使用这块空间,在不需要的时候回收这块空间。
《图解 Google V8》学习笔记Day93
豪猪
2023-05-29
阅读 3 分钟
298
异步回调模式影响到我们的编码方式,如果在代码中过多地使用异步回调函数,会将你的整个代码逻辑打乱,从而让代码变得难以理解,这也就是我们经常所说的回调地狱问题。
《图解 Google V8》学习笔记Day92
豪猪
2023-05-27
阅读 3 分钟
403
宏任务和微任务宏任务很简单,就是指消息队列中的等待被主线程执行的事件。微任务稍微复杂一点,其实你可以把微任务看成是一个需要异步执行的函数,执行时机是在主函数执行结束之后、当前宏任务结束之前。
《图解 Google V8》学习笔记Day91
豪猪
2023-05-26
阅读 2 分钟
236
从内部了解回调函数,可以帮助我们梳理清楚很多问题:有助于我们理解浏览器中的Web API到底是怎么工作的;有助于我们理解宏任务和微任务到底有哪些区别;理解回调函数,是理解异步编程模型async/await的基础。
《图解 Google V8》学习笔记Day90
豪猪
2023-05-25
阅读 3 分钟
204
我们定义了一个loadX函数,它有一个参数o,该函数只是返回了o.x。通常V8获取o.x的流程是这样的:查找对象o的隐藏类,再通过隐藏类查找x属性偏移量,然后根据偏移量获取属性值,在这段代码中loadX函数会被反复执行,那么获取o.x流程也需要反复被执行。V8采用压缩这个过程的策略就是内联缓存(Inline Cache),简称为IC。
《图解 Google V8》学习笔记Day89
豪猪
2023-05-24
阅读 4 分钟
258
JavaScript在运行时,对象属性是可以修改的。所以当V8使用一个对象的时候,比如使用了start.x的时候,他并不知道该对象是否有x,也不知道x相对对象的偏移量是多少,也可以说V8并不知道该对象的具体性形状。那么,当JAvaScript中要查询对象start中的x属性时,V8会按照具体的规则一步一步来查询,这个过程非常的慢且耗时。...
《图解 Google V8》学习笔记Day88
豪猪
2023-05-23
阅读 4 分钟
300
V8线对代码进行解析(parser),并生成为AST和作用域信息,之后AST和作用域输入到Ignition 的解释器中,并转换为字节码,之后再由Ignition解释器来解释执行。
《图解 Google V8》学习笔记Day87
豪猪
2023-05-21
阅读 3 分钟
577
所谓字节码,是指编译过程中的中间代码。处于高级代码和机器代码之间,在V8中,字节码有两个作用:第一个是解释器可以直接解释执行字节码;第二个是优化编译器可以将字节码编译为二进制代码,然后再执行二进制机器代码。观察上图可以看到,早期的V8也使用了两个编译器:第一个是基线编译器,它负责将JavaScript代码编译为...
《图解 Google V8》学习笔记Day86
豪猪
2023-05-20
阅读 2 分钟
823
在编译JavaScript代码的过程中,V8并不会一次性将所有的JavaScript解析为中间代码,这主要是基于以下两点:首先,如果是一次性解析和编译所有代码,会影响首次编译的时间,会大大增加用户等待时间。其次,解析完成的字节码和编译之后的机器代码会存在内存中,一次性解析所有JavaScript会一直占用内存,影响性能。基于以...
《图解 Google V8》学习笔记Day85
豪猪
2023-05-20
阅读 4 分钟
396
V8就会报告栈溢出的错误,为了解决栈溢出的问题,我们可以在foo函数内部使用setTimeout来触发foo函数的调用,改造之后的程序就可以正确执行。
《图解 Google V8》学习笔记Day84
豪猪
2023-05-18
阅读 3 分钟
273
V8运行时环境:准备好运行时环境,就可以执行JavaScript代码了。在执行代码时,V8需要先将JavaScript编译为字节码,然后再解释执行字节码,或者将字节码需要优化的字节码编译成二进制,并直接执行二进制代码。
1
2
(current)
3
4
5
下一页
上一页
2
(current)
下一页