zoukankan      html  css  js  c++  java
  • 第四章—变量,作用域和内存问题(一)

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

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

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

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

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

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

    2.复制变量值

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

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

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

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

  • 相关阅读:
    职场利器:说服力书籍排行榜
    经商必读的6本书推荐
    有关企业文化的书籍推荐
    创业书籍推荐
    企业文化建设的基本内容和主要步骤
    沟通书籍排行榜推荐
    企业文化建设案例与方案分享
    如何提高个人领导力?
    Project Recording: Date and Factory Date[转载]
    SAP Control framework–实例
  • 原文地址:https://www.cnblogs.com/xuzhudong/p/6513093.html
Copyright © 2011-2022 走看看