JS高级用法学习笔记之二

JS高级用法学习笔记之二
最新回答
不问归期

2026-07-13 14:02:57

ECMAScript类型

语言类型包括:字符串、布尔值、null等。

规范类型,描述语言类型。Reference类型解释了delete、typeof以及赋值等操作。

获取Reference组成部分方法:GetBase, IsPropertyReference等。

Reference构成包括:base value(属性所在对象)、referenced name(属性名称)和strict reference(默认false)。

MemberExpression描述如何确定this的值。

闭包定义为能够访问自由变量的函数。

自由变量是指函数中可用但不属于函数参数或局部变量的变量。

在函数foo中访问变量a,a既不是foo的局部变量也不是参数,故为自由变量。

在ECMAScript中,闭包指函数与函数内可访问的非自身变量的结合。

分析代码,理解执行上下文栈与执行上下文变化。

思考f函数执行时,checkscope函数上下文已销毁,如何访问checkscope作用域下的scope值?

f执行上下文维护作用域链。

AO(活动对象)和VO(变量对象)构成作用域链。

由于作用域链,f函数仍能读取checkscopeContext.AO的值,说明即使checkscopeContext销毁,JavaScript仍会保留checkscopeContext.AO在内存中,使f函数通过作用域链访问它,实现闭包概念。

传递参数原理:函数传递参数,实际传递的是参数的拷贝。

ECMAScript中所有函数参数按值传递。

现在JS分为两部分:基本类型按值传递,引用类型按共享传递。

按值传递:复制函数外部的值给函数内部参数,不影响原值,传递的是值。

共享传递:传递对象时影响原值,传递的是地址索引。

手写call定义:在指定this值和参数值下调用函数或方法。

手写apply定义:与call类似,但入参为数组。