JS中的数据类型:
基本数据类型(值类型)
number / string / boolean / null / undefined
引用数据类型
对象:{}普通对象 / []数组 / /^$/正则 / Math对象数据类型的 ...
函数:function普通函数 / 类 ...
JS代码运行在浏览器中,是因为浏览器给我们提供了一个供js代码执行的环境 -> 全局作用域(window/global)
值类型
直接按值操作,例如:var a=12; 直接把12这个值赋值给变量a(让a变量和12这个值建立了链接关系)
对象数据类型
在JS中遇到对象,会严格按照如下的步骤操作:
1、浏览器为其开辟一个新的内存空间,为了方便后期可以找到这个空间,浏览器给空间分配一个16进制的地址
2、按照一定顺序,分别的把对象键值对存储到内存空间中
3、把开辟内存的地址赋值给变量(或者其它的东西),以后变量就可以通过地址找到内存空间,然后进行一些操作
函数的操作
创建函数
1、先开辟一个新的内存空间(为其分配了一个16进制的地址)
2、把函数体中编写的js代码当做字符串存储到空间中(函数只创建不执行没有意义)
3、把分配的地址赋值给声明的函数名(function fn 和 var fn 操作原理其实相同,都是在当前作用域中声明了一个名字,此处两个名字是重复的)
执行函数
目的:执行函数体中的代码
1、函数执行的时候,浏览器会形成一个新的私有作用域(只能执行函数体中的代码)供函数体中的代码执行
2、执行代码之前,先把创建函数存储的那些字符串变为真正的js表达式,按照从上到下的顺序在私有作用域中执行
一个函数可以被执行N次,每一次执行相互之间互不干扰(后面会学习两者之间建立的间接关系)
形成的私有作用域把函数体中的私有变量等都包裹起来了(保护起来了),在私有作用域中操作私有变量和外界没关系,外界也无法直接的操作私有变量,我们把函数执行形成的这种保护机制叫做闭包。