首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS学习系列 06 - 变量对象

上一节我们讨论了执行上下文,那么在上下文中到底有什么内容,为什么它会和作用域链扯上关系,JS 解释器又是怎么找到我们声明的函数和变量,看完这一节,相信大家就不会再迷惑了。...= { VO: { // 上下文数据 (vars, FD, arguments) } } 因为变量对象是一个抽象的概念,所以并不能通过变量对象的名称直接访问,但是却可以通过别的方法来间接访问变量对象...,例如在全局上下文环境的变量对象会有一个属性 window (DOM 中) 可以引用变量对象自身,全局上下文环境的另一个属性 this 也指向全局上下文环境的变量对象。...函数上下文中的变量对象 在函数上下文中,变量对象用活动对象 AO(Active Object)来表示。...代码是如何被处理的 在第1节中我们讲过js 代码的编译过程,其中有一步叫作预编译,是说在代码执行前的几微秒会首先对代码进行编译,形成词法作用域,然后执行。

8810

JS学习系列 06 - 变量对象

上一节我们讨论了执行上下文,那么在上下文中到底有什么内容,为什么它会和作用域链扯上关系,JS 解释器又是怎么找到我们声明的函数和变量,看完这一节,相信大家就不会再迷惑了。...= { VO: { // 上下文数据 (vars, FD, arguments) } } 复制代码 因为变量对象是一个抽象的概念,所以并不能通过变量对象的名称直接访问,但是却可以通过别的方法来间接访问变量对象...,例如在全局上下文环境的变量对象会有一个属性 window (DOM 中) 可以引用变量对象自身,全局上下文环境的另一个属性 this 也指向全局上下文环境的变量对象。...函数上下文中的变量对象 在函数上下文中,变量对象用活动对象 AO(Active Object)来表示。...代码是如何被处理的 在第1节中我们讲过js 代码的编译过程,其中有一步叫作预编译,是说在代码执行前的几微秒会首先对代码进行编译,形成词法作用域,然后执行。

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS入门难点解析5-变量对象

    执行上下文(执行环境) 在前篇JS入门难点解析4-执行上下文栈中讲到,当 JavaScript 代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context...变量对象 变量对象是与执行上下文相关的数据作用域,存储了在执行上下文中定义的变量和函数声明。 不同执行上下文下的变量对象稍有不同,我们主要看一下全局上下文下的变量对象和函数上下文下的变量对象。...))组成一个变量对象的属性被创建 如果变量对象已经存在相同名称的属性,则完全替换这个属性 变量声明 由名称和对应值(undefined)组成一个变量对象的属性被创建; 如果变量名称跟已经声明的形式参数或函数相同...函数上下文的变量对象初始化只包括 Arguments 对象。 在执行上下文准备阶段会给变量对象添加形参、函数声明、变量声明等初始的属性值。 在代码执行阶段,会再次修改变量对象的属性值。 6....如果是变量提升,会打印:undefined。此处,a能成为全局变量是由于LHS,所以代码需要执行到a=1,其才能成为全局变量。(详见JS入门难点解析3-作用域)。

    1.1K40

    【Node.js】全局可用变量、函数和对象

    总结 ---- 前言 在Node.js中提供了一些全局可用的变量、函数和对象,全局就是不需要进行模块加载,可以直接使用的。其中包括全局作用域的函数和对象。...也包括不在全局作用域,而在每个模块作用域都存在的变量、函数和对象,在全局可用,但不是golbal对象的属性。...---- _dirname和_filename变量 Node.js提供了两个与文件操作相关全局可用变量_dirname和_filename变量。...其中_dirname变量表示当前文件所在目录,_filename变量表示当前正在执行的脚本的文件名。...console对象 我们在学习中,经常使用到console.log()语句,console对象就是一个全局对象,用于提供控制台标准输出。

    2.5K40

    17.Go面向对象-匿名字

    17.Go面向对象-匿名字段 前言 所谓继承指的是,我们可能会在一些类(结构体)中,写一些重复的成员,我们可以将这些重复的成员, 单独的封装到一个类(结构体)中,作为这些类的父类(结构体),我们可以通过如下图来理解...mike", 18}, 98.5} fmt.Println("s1 = ", s1) } // 执行如下: s1 = {{101 mike 18} 98.5} 以上代码中创建了一个结构体变量...由于在Student中添加了匿名字段Person,所以对象s1,也可以通过匿名字段Person来获取age,进行修改。...s1中的Person成员(匿名字段)赋值 通过以上案例我们可以总结出,根据类(结构体)可以创建出很多的对象,这些对象的成员(属性)是一样的,但是成员(属性)的值是可以完全不一样的。...也就是指针类型匿名字段*Person没有指向任何一个结构体,所以对象s1也就无法操作Person中的成员。

    36910

    java引用变量对象(java变量对象)

    注意,栈内存储的除了基本类型的变量(int 这种类型的变量)还会存储对象的引用变量。java中,引用变量实际上是一个指针,它指向的是堆内存中对象实例。...引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。 以下分解成了四个步骤。...Case cc; '''在栈内存里面开辟了空间给引用变量cc,这时cc=null''' cc=new Case(); ''' 1. new Case()在堆内存里面开辟了空间给Case类的对象,这个对象没有名字...把对象的地址在堆内存的地址给引用变量cc ''' 这样我们就明确了: Java中,这里的“=”并不是赋值的意思,而是把对象的地址传递给变量对象创建出来,其实连名字都没有,因此必须通过引用变量来对其进行操作...不仅如此, 我们仔细研究一下第二句,找找刚创建的对象叫什么名字?有人说,它叫“Vehicle”。不对,“Vehicle”是类(对象的创建模板)的名字

    2.1K40

    三、变量对象

    在JavaScript中,肯定不可避免的需要声明变量和函数,JS编译器是如何找到这些变量的呢? 我们还得对执行上下文有一个进一步的了解。...在后面的文章中我们会一一详细总结,本文的核心是变量对象变量对象(Variable Object) 变量对象的创建,依次经历了以下几个过程。...在变量对象中以函数名建立一个属性,属性值为指向该函数所在内存地址的引用 三、检查当前上下文中的变量声明,每找到一个变量声明,就在变量对象中以变量名建立一个属性,属性值为undefined 如果变量与函数同名...不过只有处于函数调用栈栈顶的执行上下文中的变量对象,才会变成活动对象。...全局上下文的变量对象 以浏览器中为例,全局对象为window。全局上下文有一个特殊的地方,它的变量对象,就是window对象。而这个特殊,在this指向上也同样适用,this也是指向window。

    55530

    VBA对象变量

    大家好,前面介绍了vba中两个主要的对象,单元格range对象和工作表worksheet对象,以及它们的属性和方法。 本节将在此基础上介绍对象变量(Object类型的变量)的相关内容。...1、声明对象变量 使用对象变量前,首先通过dim语句声明变量对象变量可以将其声明为通用的object变量,也可以声明为具体某种变量,几种常用的对象的一般写法如下: dim obj as object...声明为通用变量 dim rng as range 声明为单元格对象 dim sht as worksheet 声明为普通工作表对象 dim wb as workbook 声明为工作簿对象变量名字以容易分辨为佳...如果对象变量等于nothing,那么会中断对象变量与指定对象的关联,这点也会用于检测对象变量是否指向某对象(从而可以应用于if语句判断)。...if 对象变量 is nothing then 语句 end if ---- 本节主要介绍了对象变量(Object类型变量),重在理解如何声明对象变量,以及变量对象的赋值,建议多尝试练习。

    1.9K40

    html js 全局 变量,JS定义全局变量

    【实例名称】 定义全局变量 【实例描述】 在高级开发语言(如c#、Java)中可以很方便地使用“public”等关键字,定义应用程序中的全局变量,但JaVascript的变量只能存在于当前的方法中。...本例通过一个简单的方法实现全局变量的定义。...”;’); //设置全局变量的值 alert(varText); //显示全局变量的值 【运行效果】 【难点剖析】 本例的重点是“window.execscript”方法,execscript所执行的脚本是针对整个全局域的...将“varText”变量设置为window对象的属性,则在全局中都可以调用此变量。...【源码下载】 为了JS代码的准确性,请点击:定义全局变量 进行本实例源码下载 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134413.html原文链接:https

    15.6K20

    JS对象

    概述 JavaScript中: js中的对象就是生活中对象的一个抽象, 没有特征和行为,取而代之的是有对应的属性和方法; var stu = { name : '张三',...主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。...// 结构 : Object.keys(对象) Object.keys(obj) 值类型与引用类型 JS数据类型 简单数据类型:number、string、boolean、undefined...变量在存储简单类型的时候,存的是值本身(值类型) 变量在存储复杂数据类型的时候,存的是引用,也叫地址(类型) 值类型的存储 变量存储数据的时候,存储的直接就是这个值本身。基本数据类型存放在栈内存中。...,对象随机存在内存中,会有一个地址,变量存储的仅仅是这个对象的地址。

    11.5K72

    JS 变量提升

    问到 JS 一些细节问题的时候发挥比较糟糕,有些是知道反应得太慢,有些是压根没接触过,还是积累的太少了。这篇的 JS 变量提升问题就是从没有接触过的,网上一搜一大把,实在是不应该。...,但对变量提升的具体行为则不了解了。...在蝴蝶书里有一笔带过提了一句“通常编写代码提倡把变量声明尽量贴近变量使用的位置,以提供上下文参考,但 Javascript 没有块级作用域,所以反而推荐在函数的顶部给出所有用到变量的声明。”...而后又被赋值 10 ,至于全局变量 foo 完全没参与进来。 虽然考点是变量提升,但个人认为,答出变量提升顶多合格分,这道题还有更实用的现实意义。 ---- 由于 !...因此才会有前面蝴蝶书的那一段话,建议把函数内用到的所有变量的声明写在函数开头。

    7K20

    Js中的变量

    Js中的变量:  1:如果在var中没有初始化变量的值,则默认为undefined.  2:可以不用var来申明一个变量,但是在过程级中申明一个变量时,就必须用var.   ...js中的数据类型  1:Jscript 有三种主要数据类型、两种复合数据类型和两种特殊数据类型    主要(基本)数据类型是: 字符串 数值 布尔    复合(引用)数据类型是: 对象 数组    特殊数据类型是...: Null Undefined  2:测试是否已经声明变量 x :    if (typeof(x) == "undefined")      // 作某些操作 js中的内置对象  1:Jscript...提供了 11 个内部(或“内置”)对象。   ...它们是Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、Error 以及 String 对象

    12.9K60

    Python面向对象编程-类和对象-实例变量和类变量

    实例变量和类变量在 Python 中,类的属性分为实例变量和类变量。实例变量实例变量是指属于特定对象变量。每个类的实例都具有自己的实例变量,它们的值可以不同。...在上面的示例中,Person 类的 name 和 age 属性都是实例变量,因为它们属于特定的 Person 对象。类变量变量是指属于类本身的变量,而不是属于特定对象变量。...类变量的值对于所有类的实例都是相同的。类变量可以用于保存和共享类的状态和数据。在 Python 中,可以使用类名或实例对象来访问类变量。...如果要修改类变量的值,请始终使用类名进行访问和修改。访问实例变量和类变量可以使用点号运算符 . 来访问实例变量和类变量。如果要访问实例变量,请在实例对象后跟点号和变量名称。...例如,要访问 Person 对象 person 的 name 属性,可以使用以下语法:person.name如果要访问类变量,请使用类名后面的点号和变量名称。

    84130

    JS全局变量

    创建的变量被绑定到声明环境记录中 通过var和函数声明的变量被绑定到对象环境记录中 声明环境变量变量优先访问 使用ECMAScript和宿主环境的内置全局变量初始化全局对象 文章概要 Scope(作用域...我们在前期的文章中,描述了,V8执行JS代码核心流程 1. 先编译 2. 后执行。在这个编译的过程就是「静态」的。所以我们可以这么说,作用域是「不随代码的运行而改变」的变量查找机制。...❝JS的作用域是静态的 ❞ 同时,作用域还可以被嵌套。...即: ❝变量的作用域链由词法环境中OuterEnv串联 ❞ 3. 全局对象 全局对象是其属性成为全局变量对象。...所有ECMAScript内置的全局变量 宿主环境的所有内置全局变量(浏览器、Node.js等) 使用const/let定义的全局变量可以保证不受ECMAScript和宿主环境的内置全局变量影响。

    12.8K60

    「R」对象名字与值——存储机制图解

    绑定(binding)与 引用(reference) 将c(1, 2, 3)赋值给变量x时,实际上是将数值向量绑定到x上的过程,变量x称为引用。 ?...当我们将变量x重新赋值给y时,实际上是为数值向量创建一个新的引用。 y <- x ?...我们可以验证一下,查看两个变量的内存地址: obj_addr(x) #> [1] "0x3000ed8" obj_addr(y) #> [1] "0x3000ed8" (函数都来自lobstr包) 复制...-修改(Copy-on-modify) 如果这时候对变量y进行修改,引用y将会指向新的数据(新的内存地址)。...重新赋值给新的变量,也是创建一个引用。 ? 当对列表l2进行修改时,有意思的地方来了:下面l2只是将第3个元素的引用指向新的数值。 l2[[3]] <- 4 ?

    71220
    领券