• 第四章—变量,作用域和内存问题(一)


             我们知道ESMAScript的变量有有两种不同的类型:基本类型和引用类型。基本类型指的是简单的数据段,而引用类型指的是那些有多个值构成的对象。

    基本类型有5种,分别是string,number,boolean,null,undefined,他们是按值访问的。因为可以操作保存在变量中的实际值。而引用类型的值是保存在内存中的对象,因为JS不允许直接访问内存中的位置,所以在操作对象上,实际上是操作对象的引用而不是实际的对象

         定义基本类型的值和引用类型的值是类似的:创建一个变量并为这个变量赋值。对于引用类型的话,我们可以为其添加属性和方法,也可以改变其属性和方法。

    但我们不能给基本类型添加属性和方法,尽管这样做不会导致任何的错误

    在实践中遇到了一个题目:

    输出:给数字和字符串添加属性,导致输出异常。

    2.复制变量值

    在复制变量值的时候,基本类型和应用类型存在不同。如果从一个变量复制一个基本类型的值到另一个变量,那么会在对象上创建一个新值,然后把值复制到新变量分配的的空间上

    这两个值是独立的,互相不影响,可以分别操作

    对于引用类型的值的复制,实际上这个复制的值是一个指针,这个指针指向了存储在堆中的对象。复制结束,两个变量实际上引用的是同一个对象,因此改变其中一个变量的值,也会影响另一个变量。

    obj1和obj2对指向了同一个对象,为obj1添加属性后,通过obj2也可以访问到这个属性

  • 相关阅读:
    怎么防止重复提交
    如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
    什么是 JavaConfig?
    Spring Boot 有哪些优点?
    GBK和GB2312编码
    2.补充:计算机表示的单位:
    python中字符串的编码和解码
    Spring Boot 有哪些优点?
    Maven的工程类型有哪些?
    Maven仓库是什么
  • 原文地址:https://www.cnblogs.com/xuzhudong/p/6513093.html
Copyright © 2020-2023  润新知