最近学习中遇到了些疑惑,希望 v2 各位大牛解惑。
先说 js ,限定在 ES5 讨论。在 js 中对象是存在堆内存中的,变量只是个引用,那对象的属性是存在哪的呢,假设该属性是个数字 3 ,函数作用域中的变量又是存在哪里呢。
再说 java , static 修饰的静态变量我理解为和 js 构造函数本身的属性是类似的东西,这东西存在哪块内存,局部变量存在哪块内存,类 new 出的对象中实例变量又存在哪里。
问题总结:下面两段 java 和 js 代码中, demo.num1 , DemoJava.num2 , num3 , num4 , obj1.num5 , arr1[0]都存在内存哪里?
public class DemoJava {
public int num1 = 1;
public static int num2 = 2;
public static void main(String[] args) {
DemoJava demo = new DemoJava();
int num3 = 3;
System.out.println("num1:" + demo.num1);
System.out.println("num2:" + DemoJava.num2);
System.out.println("num3:" + num3);
}
}
var fun1, obj1, arr1;
function add() {
var num4 = 4;
}
obj1 = {
num5: 5
};
arr1 = [6, 7];
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.