zoukankan      html  css  js  c++  java
  • JavaScript的变量

    按照ECMA-262的定义,javaScript的变量与其他语言的变量有很大区别。JavaScript变量松散类型的本质(即弱值类型),决定了它只是在特定时间用于保存特定值的一个名字而已。 

    取自JavaScript高级程序设计(第三版)

    JavaScript主要分为基本类型和引用类型2种数值。

    基本类型值:Undefined、Null、Boolean、number、String(注意:在其他语言中String一般作为引用类型保存,但是ECMAScript放弃这一传统) 

    这些类型在内存中分别占有固定大小的空间,他们的值保存在空间,我们通过按值来访问的。

    同时 我们不能给基本类型的值添加任何的属性。

    引用类型:比较常见的有Array、Object、function、等等

    由于这种值的大小不固定,因此不能把它们保存到栈内存中。但内存地址大小的固定的,因此可以将内存地址保存在栈内存中。这样,当查询引用类型的变量时,先从栈中读取内存地址,然后再通过地址找到堆中的值。对于这种,我们把它叫做按引用类型。

    当然了这种类型我们可以更改其属性。

     相关衍生:

     深复制和浅复制 

    首先我们来看一下数据机构中的4个术语:shallow copy(not shadow copy) 、deep copy、pass by value、pass by reference(or pass by address)。传值和传址我们可以根据上面讲的数据类型进行理解。

    然后我们了解一下什么是深复制什么是浅复制呢?

    字面上面的:

         浅复制(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
         深复制(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.

     简单来说浅复制其实会相互影响,他们在内存中引用同一块地址。而深复制在内存中有2个地址存放相互之间不影响。

  • 相关阅读:
    windows下mysql初始密码设置
    python生成简单的验证码
    python中HTMLParser简单理解
    Windows批处理(cmd/bat)常用命令小结
    文件结束的判断和结束符的理解
    交换机与路由器
    结构体字节对齐
    有(无)符号char型及其溢出问题
    kubernetes离线包安装教程
    kubernetes(K8S)快速安装与配置集群搭建图文教程
  • 原文地址:https://www.cnblogs.com/blueSkys/p/2680327.html
Copyright © 2011-2022 走看看