zoukankan      html  css  js  c++  java
  • JavaScript 变量与堆和栈的关系

    JS 八种数据类型

    JS 是动态语言,变量可以随时持有任何类型的数据,所以 JS 的变量是没有数据类型的,值才有数据类型。

    JS 值有 8 种数据类型:

    • Boolean: true / false
    • Undefined:没有被赋值的变量或变量被提升时的,都会有个默认值 undefined
    • Null:只有一个值 null
    • Number:数字类型
    • BigInt(ES10):可以表示任意大的整数(大于 253 - 1 的整数)
    • String:字符
    • Symbol(ES6):每个从Symbol()返回的symbol值都是唯一的
    • Object:对象类型(Date/Array/Funtion/Set/Map/WeakSet/WeakMap)

    栈是内存中一块用于存储局部变量和函数参数的线性结构,遵循着先进后出 (LIFO / Last In First Out) 的原则。ECMAScript为数组专门提供了 push() 和 pop() 方法,以便实现类似栈的行为。

    堆数据结构是一种树状结构。它的存取数据的方式与书架和书非常相似。我们只需要知道书的名字就可以直接取出书了,并不需要把上面的书取出来。

    在栈中存储不了的数据比如对象就会被存储在堆中,在栈中只是保留了对象在堆中的地址,也就是对象的引用 ,对于这种,我们把它叫做 按引用访问 。

    所以

    JS 中,基本类型的数据是存放在栈中,引用类型的数据是存放在堆中的。堆中的数据是通过引用和变量关联起来的。

    注意

    闭包除外,JS 闭包中的变量值并不保存中栈内存中,而是保存在堆内存中

  • 相关阅读:
    高级查询
    简单查询
    CRUD
    T-SQL语句
    数据库规范
    导出含有特定字符串的注册表
    .net、jquery、ajax、wcf实现数据库用户名检测局部刷新
    数据结构实验之二叉树二:遍历二叉树
    传纸条
    数据结构实验之栈与队列五:下一较大值(一)
  • 原文地址:https://www.cnblogs.com/cckui/p/14665827.html
Copyright © 2011-2022 走看看