JavaScript 预编译、全局对象(GO)、活动对象(AO)、执行上下文.md
全局对象(GO)、活动对象(AO)、预编译、执行上下文预编译Javascript 是一门解释性语言,逐行解析, 逐行执行。但是我们知道,一门语言,或解析或编译前,都可能存在一个阶段:预处理。JavaScript 解析引擎会首先把整个文件进行预处理, 以消除一些歧义,这个预处理的过程就被称为预编译。
本篇文章仅对全局变量、全局函数、局部变量、局部函数的形成流程进行研究,并不深入预编译原理。
以下是对相关概念的了解。
全局对象(Global Object)
在浏览器环境中, JavaScript 引擎会整合 标签中的内容, 产生window对象, 这个window对象就是全局对象。
在 node 环境中, 会产生global对象。
全局变量我们在<script>标签中声明的变量就是全局变量。全局变量会被挂在到全局对象上。
123var a = 123console.log(a) //①:100console.log(window.a) //②:100
① 和 ② 的输出结果一样,因为 ① 和 ② 都是打印window.a的属性值 123 。
所有的<script&g ...
JavaScript 作用域、作用域链.md
作用域、作用域链概念域域:指的是“范围,区域”。怎么理解呢?在漫画《海贼王》中,劳的 room 可以操作某一个空间范围的物体转移,但是在 room 以外是不可以的。
在 JavaScript 中, 作用域分为全局作用域和局部作用域。
作用域链在 JavaScript 中, 函数存在一个隐式属性[[scopes]],这个属性用来保存当前函数在执行时的环境(上下文), 由于在数据结构上是链式的, 也被称为作用域链. 我们可以把它理解成一个数组。
123function a() {}console.dir(a) // 打印内部结构
[[scopes]]属性需要注意:
[[scopes]]属性在函数声明时产生, 在函数被调用时更新
[[scopes]]属性记录当前函数的执行环境
[[scopes]]属性是一个数组的形式0: 是函数b的AO对象1: 是GO对象
作用在访问变量或者函数时, 会在作用域链上依次查找。通过这种特性,内部函数可以使用外部函数的变量,外部函数不能使用内部函数的变量。
参考
https://zhuanlan.zhihu.com/p/2977381 ...
JavaScript 作用域、作用域链.md
作用域、作用域链概念域域:指的是“范围,区域”。怎么理解呢?在漫画《海贼王》中,劳的 room 可以操作某一个空间范围的物体转移,但是在 room 以外是不可以的。
在 JavaScript 中, 作用域分为全局作用域和局部作用域。
作用域链在 JavaScript 中, 函数存在一个隐式属性[[scopes]],这个属性用来保存当前函数在执行时的环境(上下文), 由于在数据结构上是链式的, 也被称为作用域链. 我们可以把它理解成一个数组。
123function a() {}console.dir(a) // 打印内部结构
[[scopes]]属性需要注意:
[[scopes]]属性在函数声明时产生, 在函数被调用时更新
[[scopes]]属性记录当前函数的执行环境
[[scopes]]属性是一个数组的形式0: 是函数b的AO对象1: 是GO对象
作用在访问变量或者函数时, 会在作用域链上依次查找。通过这种特性,内部函数可以使用外部函数的变量,外部函数不能使用内部函数的变量。
参考
https://zhuanlan.zhihu.com/p/2977381 ...
TypeScript 面向对象.md
面向对象面向对象是程序中一个非常重要的思想,它被很多同学理解成了一个比较难,比较深奥的问题,其实不然。面向对象很简单,简而言之就是程序之中所有的操作都需要通过对象来完成。
举例来说:
操作浏览器要使用window对象
操作网页要使用document对象
操作控制台要使用console对象
一切操作都要通过对象,也就是所谓的面向对象,那么对象到底是什么呢?这就要先说到程序是什么,计算机程序的本质就是对现实事物的抽象,抽象的反义词是具体,比如:照片是对一个具体的人的抽象,汽车模型是对具体汽车的抽象等等。程序也是对事物的抽象,在程序中我们可以表示一个人、一条狗、一把枪、一颗子弹等等所有的事物。一个事物到了程序中就变成了一个对象。
在程序中所有的对象都被分成了两个部分数据和功能,以人为例,人的姓名、性别、年龄、身高、体重等属于数据,人可以说话、走路、吃饭、睡觉这些属于人的功能。数据在对象中被成为属性,而功能就被称为方法。所以简而言之,在程序中一切皆是对象。
1、类(class)要想面向对象,操作对象,首先便要拥有对象,那么下一个问题就是如何创建对象。要创建对象,必须要先定义类,所谓的 ...
TypeScript 面向对象.md
面向对象面向对象是程序中一个非常重要的思想,它被很多同学理解成了一个比较难,比较深奥的问题,其实不然。面向对象很简单,简而言之就是程序之中所有的操作都需要通过对象来完成。
举例来说:
操作浏览器要使用window对象
操作网页要使用document对象
操作控制台要使用console对象
一切操作都要通过对象,也就是所谓的面向对象,那么对象到底是什么呢?这就要先说到程序是什么,计算机程序的本质就是对现实事物的抽象,抽象的反义词是具体,比如:照片是对一个具体的人的抽象,汽车模型是对具体汽车的抽象等等。程序也是对事物的抽象,在程序中我们可以表示一个人、一条狗、一把枪、一颗子弹等等所有的事物。一个事物到了程序中就变成了一个对象。
在程序中所有的对象都被分成了两个部分数据和功能,以人为例,人的姓名、性别、年龄、身高、体重等属于数据,人可以说话、走路、吃饭、睡觉这些属于人的功能。数据在对象中被成为属性,而功能就被称为方法。所以简而言之,在程序中一切皆是对象。
1、类(class)要想面向对象,操作对象,首先便要拥有对象,那么下一个问题就是如何创建对象。要创建对象,必须要先定义类,所谓的 ...
TypeScript 快速入门.md
快速入门0、TypeScript简介
TypeScript是JavaScript的超集。
它对JS进行了扩展,向JS中引入了类型的概念,并添加了许多新的特性。
TS代码需要通过编译器编译为JS,然后再交由JS解析器执行。
TS完全兼容JS,换言之,任何的JS代码都可以直接当成JS使用。
相较于JS而言,TS拥有了静态类型,更加严格的语法,更强大的功能;TS可以在代码执行前就完成代码的检查,减小了运行时异常的出现的几率;TS代码可以编译为任意版本的JS代码,可有效解决不同JS运行环境的兼容问题;同样的功能,TS的代码量要大于JS,但由于TS的代码结构更加清晰,变量类型更加明确,在后期代码的维护中TS却远远胜于JS。
1、TypeScript 开发环境搭建
下载Node.js
64位:https://nodejs.org/dist/v14.15.1/node-v14.15.1-x64.msi
32位:https://nodejs.org/dist/v14.15.1/node-v14.15.1-x86.msi
安装Node.js
使用npm全局安装typescript
进入命 ...
TypeScript 快速入门.md
快速入门0、TypeScript简介
TypeScript是JavaScript的超集。
它对JS进行了扩展,向JS中引入了类型的概念,并添加了许多新的特性。
TS代码需要通过编译器编译为JS,然后再交由JS解析器执行。
TS完全兼容JS,换言之,任何的JS代码都可以直接当成JS使用。
相较于JS而言,TS拥有了静态类型,更加严格的语法,更强大的功能;TS可以在代码执行前就完成代码的检查,减小了运行时异常的出现的几率;TS代码可以编译为任意版本的JS代码,可有效解决不同JS运行环境的兼容问题;同样的功能,TS的代码量要大于JS,但由于TS的代码结构更加清晰,变量类型更加明确,在后期代码的维护中TS却远远胜于JS。
1、TypeScript 开发环境搭建
下载Node.js
64位:https://nodejs.org/dist/v14.15.1/node-v14.15.1-x64.msi
32位:https://nodejs.org/dist/v14.15.1/node-v14.15.1-x86.msi
安装Node.js
使用npm全局安装typescript
进入命 ...
axios.md
axios学习axios请务必对promise和ajax有了解。
axios是什么?
前端最流行的 ajax 请求库
react/vue 官方都推荐使用 axios 发 ajax 请求
文档: https://github.com/axios/axios
axios的特点
基于XHR和promise的异步Ajax请求库。
支持浏览器端和服务器端(nodejs)。
支持请求拦截器和响应拦截器。
支持请求取消
支持请求和响应数据装换。
批量发送多个请求。
API(常用)
axios(config): 通用/最本质的发任意类型请求的方式。
axios(url[, config]): 可以只指定 url 发 get 请求。
axios.request(config): 等同于 axios(config)。
axios.get(url[, config]): 发 get 请求。
axios.delete(url[, config]): 发 delete 请求。
axios.post(url[, data, config]): 发 post 请求。
axios. ...