js的变量——基本类型保存在栈中,引用类型保存在堆中

javascript的基本类型:Undefined,Null,Boolean,Number,String

引用类型:Object,Array,Function

基本类型值在内存中占据固定大小,被保存在栈内存中,引用类型值是对象,保存在堆内存中。

Javascript的内存的生命周期对于用户来说是透明的,不开放的。在定义变量时候就完成了分配内存,使用时候是对内存的读写操作,内存的释放依赖于浏览器的垃圾回收机制。

栈(stack)和堆(heap)==>

1,栈

stack是有结构的,先进后出,存放基本类型和对象的引用,每个区块的大小是明确的。

2,堆

heap没有结构,数据任意存放,js中主要存放的是引用类型,比如:Array,Object对象

所以明显看出:数据查询速度比较的话,stack远远大于heap。

在实际开发过程中,偶尔遇到栈溢出的情况,stack overflow错误,因为stack创建时候,大小是确定的,超过额度大小就会发生栈溢出【当js出现死循环或者错误的递归时候】。heap大小是不确定的,需要可以一直累加。

js是单线程的,核心特征哈,那么怎么利用多核的CPU呢?H5的Web Worker标准,允许js脚本创建多个线程,但是子线程受主线程的控制,且不能操作DOM。

stack是线程独占的,heap是线程共有的。

【完】

原文地址:https://www.cnblogs.com/tangjiao/p/9957076.html

时间: 2024-10-10 00:03:32

js的变量——基本类型保存在栈中,引用类型保存在堆中的相关文章

js判断变量的类型(使用闭包来玩一把)

var Type = (function() { var Type = {}; for (var i = 0, type; type = ['Undefined', 'Null', 'Boolean', 'Number', 'String', 'Function', 'Array', 'Object'][i++]; ) { (function(type) { Type['is' + type] = function(obj) { return Object.prototype.toString.

(12)Powershell中变量的类型

Window Powershell中变量的类型与Java,C#等高级语言中变量的类型不一样,可以不用显示指定Powershell中变量的类型,即Powershell中的变量具有更大的灵活性.Powershell中的变量采用 .Net Framework类型. 默认情况下,当变量只有一个值时,变量的数据类型由赋予变量的值决定.例如,下面的语句创建一个整数 (System.Int32) 类型的变量: PS C:\> $a=3 如果需要确定变量的 .NET Framework 类型,可以使用 GetT

JS的变量类型与转换方法

一.数据类型判断 例子: var a = 100;           //定义了一个变量a,并且赋值100 var b = true; var c = "hello"; var d = 'k'; console.log(typeof a);    //输出a变量的类型 console.log(typeof a); console.log(typeof a); console.log(typeof a);

js 中变量是可以保存数据,也可以保存地址

<script> //变量是可以保存数据,也可以保存地址 var i; function display(){       //定义函数时,也就会返回函数的首地址 alert("hello"); } i=display;//变量i也指向了这个函数的首地址 i(); </script>

[Js高手之路第一部]JavaScript上百例实战【新版】_3 javascript变量的类型

JavaScript 数据类型 字符串.数字.布尔.数组.对象.Null.Undefined 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script> 7 //变量的类型由 变量的值来决定 8 // 弱类型语言 9 10 //字符串类型, 用引

由js apply与call方法想到的js数据类型(原始类型和引用类型)

原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b,那么此时第一个参数就为a,没有则为null),call方法第二个参数为一个列表,可以是 obj.call(null, 1,2,3,4); 而apply第二个参数为数组.这就是区别,下面来说说对它们的认识. apply最常用的就是查找数组中的最大与最小值,还可以将2个数组合并: var max=Mat

C语言支持的四种变量存储类型

http://blog.csdn.net/zhandoushi1982/article/details/5425835 一)auto:auto称为自动变量(局部变量).局部变量是指在函数内部说明的变量(有时也称为自动变量).所有的非全程变量都被认为是局部变量,所以auto实际上从来不用.局部变量在函数调用时自动产生,但不会自动初始化,随函数调用的结束,这个变量也就自动消失了.下次调用此函数时再自动产生,还要再赋值,退出时又自动消失.二)static:static称为静态变量.根据变量的类型可以分

Linux C笔记之 变量存储类型 详解

存储类型: 变量的存储类型是指存储变量值的内存类型 : 变量的存储类型决定变量何时创建.何时销毁以及它的值将保存多久 : 存储变量:普通内存.运行时堆栈.硬件寄存器: 变量的缺省存储类型取决于它的声明位置: 静态(static)变量: 在代码块之外声明的变量,存储于静态内存中,也就是不属于堆栈的内存. 静态变量,无法为它指定其他存储类型.它在程序运行之前创建,在程序的整个执行期间始终存在.它始终保持原先的值,除非给他赋一个不同的值或者程序结束. 自动(automatic)变量: 在代码块内部声明

JS基础变量、运算符和分支结构

[使用JS的三种方式]   1.HTML标签中内嵌JS(不提倡使用):   <button onclick="javascript:alert('小婊子,真点啊!')">有本事点我呀</button>   2.HTML页面中直接使用JS:   <script type="text/javascript">   //JS代码  </script>   3.引用外部JS文件:   <script language=&