JS中的数据类型

JS有两种大的数据类型:基本数据类型(值类型)和引用数据类型

值类型

值类型有六种:

  1. number
  2. string
  3. boolean
  4. null
  5. undefined
  6. symbol

引用数据类型

包括对象和函数。

  1. 对象有:
    { } 普通对象
    [ ] 数组
    /^$/ 正则
    Math 对象
    … …
  2. 函数有:
    function 普通函数

    … …

JS代码在浏览器中执行,遇到对象和遇到函数的时候,执行不同的操作步骤:

1. 对象的操作

(1) 浏览器为其开辟一个新的内存空间(堆内存),为了方便后期可以找到这个空间,浏览器给空间分配一个16进制的地址。
(2) 按照一定顺序,分别的把对象键值对存储到空间中。
(3) 把开辟的内存地址赋值给变量(或者其他东西,如事件),以后变量就可以通过地址找到内存空间,然后进行一些操作。

举个栗子:

var a = {
    name: "AAA"
};
var b = a;
b.name = "BBB";
console.log(a); // =>{ name: 'BBB' }
console.log(b); // =>{ name: 'BBB' }
b = {
    name: "CCC"
};
console.log(a); // =>{ name: 'BBB' }
console.log(b); // =>{ name: 'CCC' }

在这里插入图片描述

2. 在JS中函数的操作步骤,先创建函数,再执行函数

  1. 创建函数(再堆内存中):
    (1) 先开辟一个内存空间(为其分配了一个16进制的地址)。
    (2) 把函数体重编写的js代码当做字符串存储到空间中(函数只创建不执行的时候毫无意义)。
    (3) 把分配的地址赋值给声明的函数名(function fnvar fn = function操作原理相同,都是在当前作用域中声明了一个名字)。
  2. 执行函数(在栈内存中自上而下执行函数中的代码):
    (1) 函数执行的时候,浏览器会形成一个新的私有作用域(即栈内存,只能执行函数体中的代码)供函数体中的代码执行。
    (2) 执行代码之前,先把创建函数时存储的那些字符串变为真正的js表达式,按照从上到下的顺序在私有作用域中执行。

总结函数执行的步骤:
浏览器形成私有作用域 --> 形参赋值 --> 变量提升 --> 代码自上而下执行
在这里插入图片描述
注意两点:
① 一个函数可以被执行N次,每一次执行相互之间互不干扰(有特殊情况)。
② 形成的私有作用域把函数体中的私有变量等都包裹(保护)起来了,在私有作用域中操作私有变量和外界没关系,外界也无法直接地操作私有变量,我们把函数执行形成的这种保护机制叫做闭包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值