JavaScript
文章平均质量分 69
JavaScript相关知识点
橘子味的香蕉
这个作者很懒,什么都没留下…
展开
-
JS基础知识(三十六):垃圾回收机制
垃圾回收JS的垃圾回收机制是为了以防内存泄漏内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。在JS中,JS的执行环境会负责管理代码执行过程中使用的内存。回收方法:标记清除和引用计数标记清除标记清除:当变量进入执行环境(函数中声明变量)的时候,垃圾回收器将其标记为“进入环境”,当变量离开环境的时候(函数执行结束)将其标记为“离开环境”,在离开环境之后还有的变量则是需要被删除的变量。标记方式不定,可以是某个特殊位的原创 2021-11-17 14:42:49 · 134 阅读 · 0 评论 -
JS基础知识(三十四):解释型语言和编译型语言,静态语言和动态语言
解释型语言和编译型语言,静态语言和动态语言编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件(即exe文件)运行时不需要重新编译,直接用编译后的文件(exe文件)就行了。优点:执行效率高缺点:跨平台性差解释型语言:程序不需要编译,程序在运行的过程中才用解释器编译成机器语言,边编译边执行(没有exe文件)。优点:跨平台性好缺点:执行效率低静态语言:强类型语言,编译时确定变量的数据类型动态语言:弱类型语言,运行时确定变量的数据类型...原创 2021-11-17 14:40:45 · 293 阅读 · 0 评论 -
JS基础知识(二十):异步编程
文章目录一、回调函数二、事件监听三、发布订阅四、Promise1、Promise的三种状态2、 Promise的对象创建(参数)3、Promise.then5、Promise.catch6、Promise.all7、Promise.race8、Promise.finally五、生成器Generator/yield六、async/await一、回调函数作用:经常用于处理异步任务返回的结果场景:事件触发调用,控制函数的执行顺序使用:将回调函数作为参数传递给另外一个函数,回调函数的参数可以作为与回调函数同原创 2021-11-17 14:38:53 · 1632 阅读 · 0 评论 -
JS基础知识(三十三):dom事件流和事件委托
dom事件流和事件委托事件流:事件从触发到响应页面中接受事件的顺序(1)DOM事件流:事件捕获、处于目标阶段、事件冒泡(2)事件捕获阶段:事件从最上一级标签开始往下查找,直到捕获到事件目标(target)。(3)事件冒泡阶段:事件从事件目标(target)开始,往上冒泡直到页面的最上一级标签(4)事件委托以及好处:利用事件冒泡,指定一个事件处理程序,就可以管理某一类型的所有事件,动态添加事件,减少内存消耗...原创 2021-11-17 14:31:38 · 170 阅读 · 0 评论 -
JS基础知识(三十二):浏览器输入url
浏览器输入url协议头://域名:端口号/路径?查询参数#hash值protocol://host:port/path?query#fragment浏览器的主要功能常见的浏览器: IE、Chrome、FireFox、Opera、Safari功能:将用户选择的web资源呈现出来,即向服务器请求资源,然后将其显示在浏览器窗口中,资源的格式通常为HTML,也包括pdf,image以及其他格式,用户通过url来请求指定资源的位置url:统一资源定位符,用来定位互联网上任意资源的位置浏览器内核:最初:原创 2021-11-17 14:16:24 · 897 阅读 · 0 评论 -
JS基础知识(三十一):浏览器加载执行JS文件
文章目录1、js引擎2、语法分析3、预编译3.1 全局预编译3.2 局部预编译3.3 全局对象3.4 AO对象3.5 变量对象3.6 执行环境4、解释执行5、外部脚本的同步加载6、外部脚本的异步加载6.1 defer6.3 window.onload和domready1、js引擎脚本编译:由js引擎编译,即V8引擎(js解释器就是js引擎)V8引擎的用处:chrome浏览器的引擎、Nodejs的运行时环境、electron的底层引擎js引擎在编译和执行js代码会用到3个重要的组件:解析器:负责将j原创 2021-11-17 11:49:40 · 2361 阅读 · 0 评论 -
JS基础知识(三十):JS单线程
文章目录1、进程和线程2、浏览器的多进程3、js单线程4、同步任务和异步任务(广义)5、异步实现:任务队列和事件循环任务队列**事件循环**宏任务(macro-task)、微任务(micro-task)(异步任务细分)1、进程和线程进程:CPU进行资源分配的基本单位(进程上下文切换比线程块上下文切换慢)线程:CPU调度的最小单位,建立在进程的基础上运行的单位,共享进程的内存空间多进程:一边听歌一边写代码,进程之间互不影响多线程:线程是一个车间的工人,多个工人协作完成一个任务2、浏览器的多进程浏原创 2021-11-17 11:30:22 · 3276 阅读 · 0 评论 -
JS基础知识(二十九):深拷贝和浅拷贝
文章目录1、深拷贝与浅拷贝概览2、赋值、深拷贝与浅拷贝区别3、浅拷贝实现方式3.1 Object.assign()3.2 Array.prototype.concat()3.3 Array.prototype.slice()4、深拷贝实现方式4.1 JSON.parse(JSON.stringify(arr))4.2 手写递归4.3 _.cloneDeep()1、深拷贝与浅拷贝概览在对象嵌套对象的情况下,我们会讨论深拷贝与浅拷贝。浅拷贝只拷贝父对象,对于值类型的字段会复制一份,但是对于引用类型的字段只原创 2021-11-17 11:08:02 · 998 阅读 · 0 评论 -
JS基础知识(二十八):箭头函数
1、箭头函数的使用箭头函数有两种格式, 一种只包含一个表达式,没有{…} 和 return一种包含多条语句, 这个时候{} return 就不能省略箭头函数类型代码没有参数() => 100 function(){ return 10}一个参数x => x+1 function(x){ return x + 1}多个参数(x, y) => x + y function(x, y) { return x + y}可变参数(x, y, …re原创 2021-11-17 10:55:08 · 7430 阅读 · 2 评论 -
JS基础知识(二十七):this和作用域
文章目录一、this1.1 this1.2 call、apply、bind1.3 call、apply应用1.4 bind应用二、作用域2.1 作用域2.2 作用域链2.3 with语句2.4 词法作用域2.5 动态作用于——运行时确定一、this1.1 thisthis:this表示对当前对象的引用,this随着执行环境的改变而改变this使用this指向方法中使用this表示方法所属的对象单独使用this表示全局对象函数中使用this表示全局对象(在函数原创 2021-11-17 10:47:55 · 1164 阅读 · 0 评论 -
JS基础知识(二十六):闭包
闭包闭包:闭包是指有权访问另一个函数作用域中的变量的函数闭包使用原因:避免全局污染(全局变量很容易被修改)使用:函数嵌套函数,外层函数定义变量,内层函数使用变量,返回内层函数。外层函数调用后,变量被初始化,然后函数执行结束销毁,变量依然存在。执行返回的内层函数,修改变量(作用域链的存在),变量在内层函数中相当于全局结果:函数外部读取局部变量,让这些变量始终保存在内存中,不会随着函数的结束而自动销毁通常使用闭包设计私有属性和方法缺点:导致内存泄漏(局部变量常驻内存,需要主动回收)资料:http原创 2021-11-15 17:28:14 · 330 阅读 · 0 评论 -
JS基础知识(二十五):进制转换
声明进制数js只能定义8进制、十进制、十六进制定义八进制数,字面值第一位为0 010 => 8定义十六进制数,字面值前两位为0x 0x10 => 16进制转换方法:使用toString() 和 parseInt() 进行进制转换toString(): 将数字转换为不同的进制(转换数字)parseInt(a, b):将a看成b进制,并转换为10进制(转换数字或字符串)null和undefined没有toString()方法num1 = 072(8进制);num1.t原创 2021-11-15 17:19:02 · 682 阅读 · 0 评论 -
JS基础知识(二十四):var、let、const
var、let、const1、变量声明与赋值方式描述var 声明的变量可以重新声明和重新分配let 声明的变量不可以重新声明和但可以重新分配const声明的变量不能重新声明也不能重新分配PS:没有使用var,let,const声明的变量,都属于全局变量2、var作用域——全局、函数var声明的变量是函数作用域或者是全局作用域当var声明的变量是全局变量时,他会在window上面创建一个同名的全局属性当在函数内部用var声明变量时,该变量的作用域为该函数原创 2021-11-15 17:11:54 · 585 阅读 · 0 评论 -
JS基础知识(二十三):原型链
原型链原型的产生:函数声明,即创建一个构造函数A时(一般情况下都用构造函数创建对象),浏览器会在内存中创建一个对象B,对象B就是函数A的原型对象,A的prototype属性指向B,B的constructor指向A,原型对象默认只有属性:constructor。其他都是从Object继承而来,暂且不用考虑。使用原型对象的好处:所有对象实例共享它所包含的属性和方法。对象实例创建:使用构造函数创建对象,实例对象会有不可见的属性 [[prototype]], 而且这个属性指向了构造函数的原型对象,使用__pr原创 2021-11-15 16:59:42 · 257 阅读 · 0 评论 -
JS基础知识(七):对象、Math、Date
文章目录一、对象1. 对象创建1.1 简单对象创建2. 对象继承二、Math对象三、Date对象1. 日期对象2. 创建日期对象3. 格式化方法4. Date对象的方法一、对象1. 对象创建1.1 简单对象创建创建 Object 类型有两种。一种是使用 new 运算符,一种是字面量表示法。使用 new 运算符创建 Objectvar box=new Object(); //new 方式box.name=‘田雨飞’; //创建属性字段new 关键字可以省略var box原创 2021-11-15 16:41:28 · 301 阅读 · 0 评论 -
JS基础知识(二十二):基本包装类型
基本包装类型基本包装类型:String、Number、Boolean基本包装类型:基本包装类型是特殊的引用类型,具有与基本数据类型对应的引用类型的属性和方法。当基本数据类型以对象的方式使用时,js会转换为对应的包装类型。一个基本数据类型值(String、Number、Boolean——没有使用new进行创建)想使用某种方法时,后台会创建一个对应的基本包装类型的对象,从而使得基本数据类型能够调用一些方法处理数据。PS:var a = new String(‘aaa’)和 var a = 'aaa’原创 2021-11-15 11:45:35 · 1054 阅读 · 0 评论 -
JS基础知识(二十一):堆和栈
操作系统的堆栈——两种内存管理方式内存内存:由于寄存器只能存放少量的数据,因此很多数据会存储在内存中,CPU指挥寄存器和内存交换数据。程序内存分配:程序运行时,操作系统会给他分配一段内存,用来存储程序和运行时产生的数据。这段内存有起始地址和结束地址堆和栈堆:程序运行过程中,对于动态的内存占用请求(新建对象、malloc),系统会从预先分配好的那段内存中,划分一部分内存给用户,从起始地址开始划分(实际上,起始地址处会有一段静态数据(全局执行环境?),这里忽略)。这种由于用户主动请求而划分出来的内原创 2021-11-15 11:33:02 · 184 阅读 · 0 评论 -
JS基础知识(十一):正则表达式
文章目录一、创建正则表达式二、正则表达式对象的方法三、字符串中使用正则表达式四、元字符(编写正则表达式)五、常用正则一、创建正则表达式二、正则表达式对象的方法三、字符串中使用正则表达式四、元字符(编写正则表达式)五、常用正则...原创 2021-11-08 17:54:27 · 530 阅读 · 2 评论 -
JS基础知识(十):事件
文章目录一、事件绑定方式1.1 内联模式1.2 外联模式(脚本模式)二、事件处理函数2.1 鼠标事件,页面所有元素都可触发2.2 键盘事件,表单元素或window触发2.3 HTML事件,表单元素或window触发三、事件对象3.1 事件对象3.2 事件对象的属性3.2.1 button属性3.2.2 鼠标事件(可视区域及屏幕坐标)3.2.3 鼠标事件(修改键)3.3 键盘事件3.3.1 keyCode键码3.3.2 charCode字符编码3.4 触发事件的元素节点(target)四、事件冒泡和事件捕获4原创 2021-11-08 16:48:33 · 707 阅读 · 0 评论 -
JS基础知识(九):DOM
文章目录一、DOM二、DOM节点2.1 查找元素节点2.2 元素节点属性2.3 操作元素节点2.3.1 firstChild和lastChild属性一、DOM文档对象模型DOM(document Object Model),是 W3C(万维网联盟)的标准DOM 定义了访问 HTML 和 XML 文档的标准:W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。加载 HTML 页面时,Web 浏览器生成一个树型结构,用来表示页面内部原创 2021-11-08 11:36:21 · 428 阅读 · 1 评论 -
JS基础知识(八):BOM
文章目录一、BOM的概念二、系统对话框三、window.open方法四、一、BOM的概念BOM:浏览器对象模型(browser object model)浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。Window是BOM中的核心对象。二、系统对话框//浏览器可以通过alert()、confirm()和 prompt()方法//调用系统对话框向用户显示信息。//弹出警告alert("Lee"); //直接弹出警告框//提示框 确定和原创 2021-11-08 09:51:44 · 238 阅读 · 0 评论 -
js基础知识(四):数组
文章目录1、数组声明2、数组遍历2.1 普通for循环2.2 for…in3、数组方法3.1 栈方法3.2 队列方法3.3 concat3.4 slice3.5 splice3.6 join3.7 reverse3.8 sort1、数组声明三种声明方式:通过new运算符创建数组var arr = new Array(10, 20, true, “hello”);省略new运算符创建数组var arr = Array(10, 20, true, “hello”);直接通过常量赋值var a原创 2021-11-05 18:08:35 · 188 阅读 · 0 评论 -
JS基础知识(五):字符串
文章目录1、字符串声明2、字符串方法2.1 基础方法2.2 charAt()、charCodeAt()2.3 concat()2.4 indexOf(“abc”, start)2.5 lastIndexOf("abc”)2.6 search()2.7 replace()2.8 substring(start, end);2.9 split( separator, howmany);2.10 将字符串转成全大写或全小写1、字符串声明三种声明方式:通过new运算符创建字符串var str = new原创 2021-11-05 18:08:09 · 286 阅读 · 0 评论 -
JS基础知识(六):严格模式
文章目录1、严格模式目的2、严格模式使用3、严格模式规范3.1 全局变量声明时,必须加var3.2 this无法指向全局对象3.3 函数内重名属性3.4 arguments对象3.5 新增保留字1、严格模式目的严格模式的目的:消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;消除代码运行的一些不安全之处,保证代码运行的安全;提高编译器效率,增加运行速度;为未来新版本的Javascript做好铺垫。2、严格模式使用进入严格模式 "use strict”//s原创 2021-11-05 16:34:10 · 498 阅读 · 0 评论 -
JS基础知识(二):三大流程控制——顺序、选择、循环
文章目录1、程序的三大流程控制2、顺序结构3、选择结构3.1 if单分支3.2 if双分支3.3 if多分支语句3.4 嵌套if结构3.5 switch结构3.6 条件运算符四、循环4.1 while循环4.2 do-while循环4.3 while和do_while的区别4.4 for循环4.5 循环嵌套4.6 break 关键字4.7 continue关键字4.8 死循环1、程序的三大流程控制顺序、分支(选择/条件)、循环顺序:从上朝下执行的代码选择:根据不同的情况,执行对应代码循环:重复原创 2021-11-05 14:44:56 · 601 阅读 · 0 评论 -
JS基础知识(一):变量、常量、数据类型、运算符
文章目录一、常量二、变量1.变量定义/声明2.变量命名3.数据类型3.1 基本数据类型和引用数据类型3.2 基本数据类型和引用数据类型区别3.3 数据类型的判断3.4 数据类型的转换4. JS是弱引用语言三、运算符1. 算数运算符2. 赋值运算符3. 一元运算符4. 关系运算符5.逻辑运算符6.位运算符一、常量常量/直接量( 字面量 literal):就是程序中直接显示出来的数据100 //数字字面量‘田雨飞’ //字符串字面量false //布尔字面量二、变量1.变量定义/声原创 2021-11-05 10:56:13 · 690 阅读 · 1 评论