您的位置:首页 > Web前端 > JavaScript

JavaScript基础知识

2015-01-08 22:43 99 查看
JavaScript中的基本数据类型包括Undefined、Null、Boolean、Number和String;

ECMAScript变量可能包含两种不同数据类型的值:基本类型值(值传递)和引用类型值(引用传递)。

基本类型值指的是那些保存在栈内存中的简单数据段;

引用类型值指的是那些保存在堆内存中的对象。

JavaScript中所有函数的参数都是按值传递的。

数组的sort()方法可以接收一个比较函数作为参数,比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个之后则返回一个正数。

在JavaScript中,函数也是对象,因此也具有属性和方法。属性主要包括length和prototype两个属性。其中length属性指的是函数预期接收的参数个数。每个函数都包含两个非继承而来的方法:apply()和call()。

每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有变量和函数都保存在这个对象中。

在Web浏览器中,全局执行环境被认为是window对象。

某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁。

每个函数都有自己的执行环境。

当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端,始终都是当前执行的代码所在环境的变量对象。如果这个环境是函数,则将其活动对象(activation object)作为变量对象。

标识符解析式沿着作用域链一级一级地搜索标识符的过程。搜索过程始终从作用域链的前端开始,然后逐级地向后回溯,直至找到标识符为止(如果找不到标识符,通常会导致错误发生)。

JavaScript具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内容。

JavaScript中最常用的垃圾收集方式是标记清除(mark-and-sweep)。

到2008年为止,IE、Firefox、Opera、Chrome和Safari的JavaScript实现使用的都是标记清除式的垃圾收集策略(或类似的策略),只不过垃圾收集的时间间隔互有不同。

另一种不太常见的垃圾收集策略是引用计数(reference counting)。

JavaScript在进行内存管理及垃圾收集时面临的问题还是有点与众不同。其中最主要的一个问题,就是分配给Web浏览器的可用内存数量通常要比分配给桌面应用程序的少。这样做的目的主要是出于安全方面的考虑,目的是防止运行JavaScript的网页耗尽全部系统内存而导致系统崩溃。内存限制问题不仅会影响给变量分配内存,同时还会影响调用栈以及在一个线程中能够同时执行的语句数量。

因此,确保占用最少的内存可以让页面获得更好的性能。而优化内存占用的最佳方式,就是为执行中的代码保存必要的数据。一旦数据不再有用,最好通过将其值设置为null来释放其引用——这个做法叫做解除引用(dereferencing)。不过,解除一个值的引用并不意味着自动回收该值所占用的内存。解除引用的真正作用是让值脱离环境,以便垃圾收集器下次运行时将其回收。

引用类型的值(对象)是引用类型的一个实例。在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。尽管ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。

ECMAScript中的数组与其他多数语言中的数组有着相当大的区别。虽然ECMAScript数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据。而且,ECMAScript数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增内容。

数组的length属性不是只读的,可以通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: