JavaScript学习12:变量、作用域及内存

基础类型:Undefined、Null、Boolean、Number和String。这些类型在内存中分别占用固定大小的空间,他们的值保存在栈空间,我们通过按值来访问的。

引用类型值:Object

如果赋值的是引用类型的值,则必须在堆内存中为这个值分配空间。由于值大小不固定,因此不能把它们保存到栈内存中。但内存地址大小是固定的,因此可以将内存地址保存在栈内存中。当查询引用类型的变量,先从栈中读取内存地址,然后通过地址找到堆中的值,叫做按引用访问。

检测基本类型,通常,我们并不像知道它是不是对象,而是想知道它到底是什么类型的对象,因为数组也是object,null也是object,这时我们应该采用instanceof运算符来查看。

扩展:通常js检测一个变量类型,通过typeof来检测,只能输出具体的数据类型。

<script type="text/javascript">
	var box = [1,2,3];
	alert(box instanceof Array);
	var box2 = {};
	alert(box2 instanceof Object);
	var box3 = /g/;
	alert(box3 instanceof RegExp);
	var box4 = new String('cai')
	alert(box4 instanceof String);
</script>

作用域

每个函数被调用时都会创建自己的执行环境,当执行到这个函数时,函数的环境就会推到环境栈中去执行,而执行后又在环境中退出,把控制权交给上一级的执行环境

当代码在上一个环境中执行时,就会形成一种叫做作域链的东西。它的用途是保证对执行环境中有访问权限的变量和函数进行有序访问。


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流