zoukankan      html  css  js  c++  java
  • 3_1:语言基础:原始值 与 引用值

    一  原始值 与 引用值

    . 原始值 就是最简单的数据
    . 引用值 则是由多个值构成的对象
    . 把一个值赋给变量时 JavaScript引擎必须确定这个值是原始值还是引用值

    . 保存原始值的变量 是按值(by value)访问的 因为我们操作的就是存储在变量中的实际值
    . 引用值是保存在内存中的对象.
    . 与其他语言不通 JavaScript不允许直接访问内存位置 因此也就不能直接操作对象所在的内存空间.
    . 在操作对象时 我们实际操作的是该对象的引用,而非实际对象本身.
    . 保存引用值的变量 是按引用(by reference)访问的
    . 注意点:在很多语言中 字符串是使用对象表示的 因此被认为是引用类型 ECMAScript 打破了这个惯例

    1)动态属性

    . 原始值和引用值的定义方式很类似 都是创建一个变量 然后给它赋一个值.

    . 对于引用值而言 可以随时添加 修改 删除其属性和方法.

    . 原始值不能有属性 尽管给原始值添加属性不会报错.

    2)复制值

    . 原始值复制:let a = 10; let b = a; 把a拷贝了一个给b 它们是两个完全独立的变量 互不影响

    . 引用值复制:复制的是对象的引用 也就是说a对象和b对象 它们在内存堆中是一个对象

    3)传递参数

    4)确定类型

    . typeof 操作符 最适合判断 一个变量是否是原始类型
    更确切的说:判断一个变量是否为 字符串 数值 布尔值 或 undefined 用typeof是最好的方式
    如果值是对象或null 那么typeof 返回 object
    typeof 对原始值非常有用 但是对引用值用处不大 我们通常不关心一个值是不是对象 而是想知道它是什么类型的对象

    . instanceof 操作符 判断对视的引用类型

    小结:

    . 原始值大小固定 因此保存在栈内存中
    . 从一个变量 到 另一个变量 复制原始值 会创建该值的第二个副本.
    ----------------------------------------------------
    . 引用值是对象 存储在堆内存中
    . 包含引用值的变量 实际上只包含 指向响应对象的指针 而不是对象本身
    . 从一个变量 到 另一个变量 复制引用值 只会复制指针 因此结果是 两个变量都指向同一个对象
    -----------------------------------------------------------------------------
    typeof 操作符 可以确定值的原始类型

    instanceof 操作符 用于确保值的 引用类型
  • 相关阅读:
    检测mysq组复制的脚本
    centos7安装NFS
    mysql组复制安装
    springboot+VUE(一)
    redis集群配置
    codevs 3139 栈练习3
    codevs 3138 栈练习2
    codevs 2622 数字序列
    codevs 1054 电梯
    codevs 1507 酒厂选址
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14818129.html
Copyright © 2011-2022 走看看