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 闭包中的变量值并不保存中栈内存中,而是保存在堆内存中

  • 相关阅读:
    配置高并发jdbc连接池
    java中的sleep()和wait()的区别
    程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
    转HashMap Hashtable区别
    chrome 常用快捷操作
    sublime Text 常用操作
    flash 右键菜单隐藏与修改
    As3.0 视频缓冲、下载总结
    flash cs6 更新到Flash player15.0 及Air 更新方法
    As3.0 Interface 与类的使用
  • 原文地址:https://www.cnblogs.com/cckui/p/14665827.html
Copyright © 2011-2022 走看看