胡扯JS系列-内存模型和函数执行

2019-01-07  本文已影响0人  胖先森
image

准备写点乱七八糟的文章,对JavaScript的胡扯

赋诗一首

对象本无根,

类型亦无形。

本来无一物,

何处惹尘埃?

一、JavaScript的内存模型

JavaScript的本质是一个对象,一个对象可以包含多个属性,对象的属性可以分为直接量和对象两种类型,而对象又分为Object对象和function对象两种类型。

按照数据类型划分:


直接量和对象的两种类型的属性在内存中保存方式不同(跟Java中的类似)

对于对象类型的属性来说,属性名知识指向了保存对象的内存地址,而不是执行实际的对象,代码演示如下:

function F(){
    this.v = 1;
}
var f1 = new F();
var f2 = f1;
console.log(f2.v);
f2.v = 2;
console.log(f1.v);
f1 = null;
console.log(f2.v);

代码的执行图解:

image

我们一直都说JavaScript是脚本语言,在浏览器中解释执行的,不应该有自己的内存模型,其实不是这样的。无论编译语言还是解释型语言,他们的变量、函数、对象等数据都是保存在内存当中的,使用时需要通过变量名在指定地方找到对应的具体内容,然后再进行实际操作。

二、在JS中函数是如何执行的

函数我们之前已经都接触过了,函数无非有两部分:数据和对数据的操作。数据有分为外部数据内部数据。对于外部数据我们先不进行说明,这里主要是说函数,内部数据有分为参数变量两个部分。

参数(形参):在函数每次执行的时候参数都会被赋予一个新的数值;

变量(局部变量):每次都会设置为一个相同的初始值;

上一篇 下一篇

猜你喜欢

热点阅读