1.JavaScript实现是由ECMAScript、DOM和BOM组成。
a.ECMAScript仅仅是一个描述,定义了脚本语言的所有属性、方法和对象.b.DOM[文档对象模型]是HTML和XML的应用程序接口,DOM将把整个页面规划成由节点层级构成的文档。c.BOM[浏览器对象模型]可以对浏览器窗口进行访问和操作。JS对象有:Array Boolean Date Math Number String RegExp Functions Events
Browser对象有:Window Navigator Screen History LocationDOM对象有:Document Element AttributeEvent2.ECMAScript函数
a. arguments对象,无需明确指出参数名,就能访问参数。1)比如:function a(a){ alert(arguments[0]);}a(1);执行结果将是弹出框显示1;2)ECMAScript不会验证传递给函数的参数个数是否等于函数定义的参数个数。比如:function a(a,b){ alert(arguments[0]);}只传一个参数仍然正常执行。a(1);3)检测函数的参数个数 用arguments.lengthb.Function 对象
ECMAScript 的函数实际上是功能完整的对象。
3.闭包
由于Javascript语言特有的"链式作用域"结构,有个问题:函数外部无法读取函数内的局部变量怎么实现:在函数内部,再定义一个函数
其实 a2 可以写成 a2 = function(){},也就是说a2被赋给了一个全局变量,a2始终在内存中,a1是a2的父函数,所以a1也一直在内存中,不会在调用结束后,被垃圾回收机制回收。
总结:1.闭包会使得函数中的变量都被保存在内存中。2.闭包会在父函数外部,改变父函数内部变量的值。