this 不同环境下的全局this指向 在浏览器环境下,this指向了window 在node的环境下,this指向了global({}) 因为不同环境this的指向不一致,所以在ES11的时候新增了一个属性:GlobalThis,根据不同环境动态指向对应的全局this 函数this的指向 在执行函数执行栈(FEC)时,会创建VO,scope chain和this这时的this是动态绑定的,不是创建时 2022-04-12 JavaScript JavaScript
闭包 什么是闭包? 一个普通的函数,如果可以访问外层作用域的变量,那么这就是一个闭包 广义的角度上: JS的函数都是闭包狭义的角度上: JS中的一个函数,内部引用了外部作用域的变量,那就是闭包 function foo( param = 1 ){ return function(){ return param += 1 } 2022-04-12 JavaScript JavaScript
浅谈JavaScript中的函数 函数 JavaScript中,函数是一等公民,可以作为一个参数传递,也可以作为一个函数的返回结果 高阶函数 当一个函数的返回值是另一个函数或者接收的参数是另一个函数,这时候我们将这个函数称之为高阶函数funciton foo(){ return function(){} } function foo(callback){ callback( 2022-04-12 JavaScript JavaScript
内存管理 内存管理 生命周期(1) 分配申请所需要的内存(2) 使用分配的内存(存放对象等)(3) 不需要使用内存时,进行释放 JS分配内存(1) 在声明变量时自动分配内存(2) 基础数据类型和复杂(引用)数据类型内存的分配 i. 基础数据类型存放在栈内存里 ii.复杂数据类型会在内存中开辟一个空间,将数据存放在空间里并且返回这个空间的地址指针给变量进行引用 垃圾回收定义: 因为内存大小是有限的 2022-04-11 JavaScript JavaScript
函数的编译和执行 全局函数的编译 在js引擎编译的时候,如果检测到是一个函数:(1) 会在Global Object先声明一个函数的变量(2) 之后在内存中创建一个新的空间存储函数对象(3) 函数对象里包含着(父级作用域、函数代码执行块和this),GO里的函数变量则引用着这个新地址 注意: foo()是执行代码,编译时是不会执行的 函数的执行 执行函数调用时( foo() ),会在全局调用栈中(GEC)创建 2022-04-11 JavaScript JavaScript
JavaScript的运行 代码解析 在JS引擎解析时,会形成一个Global Object(全局对象),里面内置了String,Math等类,window:this(指向Global Object),全局声明的变量在解析时也会放置在这里,但是默认值为undefined,因为解析时不执行代码(赋值、函数调用等) 代码执行 JS引擎通过执行上下文栈(调用栈)调用代码 Q:全局变量没有调用栈该如何执行调用?A:需要创建全局执行 2022-04-11 JavaScript JavaScript
JS基础运行知识 JS代码是如何在浏览器中运行的? 浏览器通过DNS解析域名为IP地址,访问IP地址返回html文件 html文件下载完成后,解析html文件(1) 解析到script标签,就会去服务器下载对应的JS文件(2) 遇到link标签,就会去服务器下载对应的css文件 等到js文件下载完成后,浏览器就会通过浏览器内核,解析运行JS代码 浏览器渲染过程 将html解析形成DOM树,此时遇到JS标签则会体质 2022-04-10 JavaScript JavaScript Http
微信小程序の一些踩坑点 WXS的使用 小程序如何使用在页面上使用类似于vue2的过滤器属性?A: WXS 使用 新建一个wxs文件,里面只支持js的es5语法,在里面写转换函数,通过module.exports = {方法名} 导出 在需要使用工具类函数的页面引入wxs标签// module 就是类似于整个模块名称,通过这个名称获取里面的方法 <wxs sr="../ 2022-03-04 微信小程序 微信小程序
微信小程序の登录流程 登录流程 小程序端: (1) 在小程序通过wx.login API获取临时的code (2) 调用接口将code传递给自己的服务器 自己服务器端: (1) 获取小程序内传来的临时的code (2) 将临时的code + appId + appsecret发送给微信小程序服务器,获取 openId 和 session_ 2022-03-04 微信小程序 微信小程序
微信小程序の分包 使用场景&限制 优化小程序启动时加载事件,协同开发进行解耦 限制:(1) tabbar或者首屏使用的文件不能进行分包(2) 单个小程序打包大小不能超过2MB,使用分包总体小程序包体积不能大于20MB 值得注意: 如果需要分包,应该在小程序开发前期就规划好,定下基础模块,防止往后开发改造目录结构带来麻烦 使用分包 在根目录下简历packageModeName(模块名称)的文件夹 2022-03-04 微信小程序 微信小程序