本文是我自己的学习笔记:慢慢学习慢慢更新。。。
1. javascript函数和对象的区别:
function f1(){ alert("f1"); } var f2 = f1; f2(); // ----> f1 f1 = function(){ alert("----------f1------------"); } f2(); // ----> f1
var o1 = new object(); var o2 = o1; o2.name = "123"; alert(o1.name); // ------>>>123 对象是通过引用的方式来完成对象的赋值
在javascript中函数就是对象但是却和对象有些不同,对象是通过引用来完成对象的赋值的,而javascript中的函数是通过对象的拷贝来完成函数的复制的,因此当执行var f2 = f1;此时f2与f1就是两个独立的函数。因此在最后调用f2();的时候依然还是输出f1;
2. javascript中没有真正意义上函数的重载,只有函数的覆盖。。。
function sun(num){ return num + 10; } function sun(num){ return num + 20; } var result = sun(10); // 30
分析:就java语言来说,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数的类型和数量)不同即可。即就是java是通过函数的签名来区别不同的函数的,而javascript函数没有签名,因为其参数是由包含零个或多个值的数组来表示的。也就是说通过一个特殊的参数arguments来代表函数的参数。因此也就没办法区别不同的函数。。。所以真正意义上的函数重载是没办法实现的!!!
3. javascript的类型
类型分为:基本类型和引用类型。
此处要注意的一点是:在很多语言中,字符串以对象的形式来表示,因此被认为是引用类型,而在javascript中却是当作基本类型数据来使用。
基本类型分为:Undefined,Null,Boolean,Number,String
4. javascript的垃圾收集
分析:Javascript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。
类型分为:标记清除和引用计数
标记清除:就现在而言大多数浏览器都是使用标记清除的方式进行垃圾手机策略,只不过垃圾收集的时间间隔互有不同而已。
问题:系统分配给web浏览器的可用内存数量要比分配给桌面应用程序少!
解决方法:对于全局变量,需要我们在不使用它的时候手工为它解除引用,而对于局部变量来说,适当他的执行环境运行完,自动释放其所占用的内存。