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属性不是只读的,可以通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。
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属性不是只读的,可以通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。
相关文章推荐
- JavaScript基础知识
- JavaScript基础知识
- JavaScript基础知识(六)
- JavaScript基础知识
- JavaScript基础知识(二)
- javascript基础知识
- JavaScript基础知识(四)
- JavaScript基础知识(三)
- javascript 常用基础知识
- JavaScript(一、基础知识)
- javascript学习中的一些心得(基础知识,高手免进)
- JavaScript基础知识总结
- JavaScript基础知识(五)
- JavaScript基础知识
- javascript基础知识
- javascript基础知识
- 从零开始javascript(1):js基础知识
- 关于javascript的基础知识
- JavaScript基础知识
- Javascript&DHTML基础知识第1/2页