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 Location
DOM对象有:Document Element AttributeEvent

2.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.length

b.Function 对象
ECMAScript 的函数实际上是功能完整的对象。

<script>
var a = n // 1实例化Function类对象
var func = new Function("a","b","alert(a+b);");
func(1,2);//弹出3 // 2 重载func函数 (其实也是func值被改成了指向不同对象的指针,函数名只是指向函数对象的引用值)
var func = new Function("a","b","alert(a);");
func(1,2);//弹出1 // 3使两个变量指向同一个函数
var nfunc = func;
nfunc(1,2);//弹出1 // 4另外两种写法
var func = function(a,b){
alert(a);
} function func(a,b){
alert(a);
}
//所以 函数只不过是一种引用类型
</script>

  

3.闭包
由于Javascript语言特有的"链式作用域"结构,
有个问题:函数外部无法读取函数内的局部变量
怎么实现:在函数内部,再定义一个函数

<script>
//函数a1
function a1(){
//局部变量
var n = 1;
//子函数a2
function a2(){
console.log(n);
}
//声明全局、匿名函数
_do = function(){n++;}
// 返回a2的引用
return a2;
}
//拿到a2的引用
var a2 = a1();
//执行
a2();//结果1
_do();
a2();//结果2
</script>

  

其实 a2 可以写成 a2 = function(){},也就是说a2被赋给了一个全局变量,a2始终在内存中,a1是a2的父函数,所以a1也一直在内存中,不会在调用结束后,被垃圾回收机制回收。
总结:
1.闭包会使得函数中的变量都被保存在内存中。
2.闭包会在父函数外部,改变父函数内部变量的值。

JavaScript的3大组成部分&&ECMAScript函数&&闭包的更多相关文章

  1. JavaScript碎片—函数闭包(模拟面向对象)

    经过这几天的博客浏览,让我见识大涨,其中有一篇让我感触犹深,JavaScript语言本身是没有面向对象的,但是那些大神们却深深的模拟出来了面向对象,让我震撼不已.本篇博客就是在此基础上加上自己的认知, ...

  2. javascript函数闭包(closure)

    一,首先感受下javascript函数的闭包 二,闭包 1,定义:闭包就是能够读取其他函数内部变量的函数,由于在javascript语言中,只有在函数内部的子函数才能够读取局部变量,因此可以把闭包简单 ...

  3. javascript闭包—围观大神如何解释闭包

    闭包的概念已经出来很长时间了,网上资源一大把,本着拿来主意的方法来看看. 这一篇文章 学习Javascript闭包(Closure) 是大神阮一峰的博文,作者循序渐进,讲的很透彻.下面一一剖析. 1. ...

  4. JavaScript碎片———函数闭包(模拟面向对象)

    经过这几天的博客浏览,让我见识大涨,其中有一篇让我感触犹深,JavaScript语言本身是没有面向对象的,但是那些大神们却深深的模拟出来了面向对象,让我震撼不已.本篇博客就是在此基础上加上自己的认知, ...

  5. JavaScript组成部分——ECMAScript、DOM、BOM、

    1.JavaScript组成部分 虽然 JavaScript 和 ECMAScript 通常被人们用来表达相同的含义,但 JavaScript 的含义却比ECMA-262标准中规定的要多得多. 一个完 ...

  6. JavaScript的函数闭包详细解释

    闭包是指有权访问另一个函数作用域中的变量的函数 一.创建闭包的常见的方式: 就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量. //通过闭包可以返回局部变量 function b ...

  7. JavaScript进阶系列01,函数的声明,函数参数,函数闭包

    本篇主要体验JavaScript函数的声明.函数参数以及函数闭包. □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调 ...

  8. JavaScript学习总结-技巧、有用函数、简洁方法、编程细节

    整理JavaScript方面的一些技巧.比較有用的函数,常见功能实现方法,仅作參考 变量转换 //edit http://www.lai18.com var myVar = "3.14159 ...

  9. JavaScript中的apply和call函数详解(转)

    每个JavaScript函数都会有很多附属的(attached)方法,包括toString().call()以及apply().听起来,你是否会感到奇怪,一个函数可能会有属于它自己的方法,但是记住,J ...

随机推荐

  1. Path

    <Path Data="M17.5,16.5 L17.5,18.5 19.5,18.5 19.5,16.5 z M11.5,16.5 L11.5,18.5 13.5,18.5 13.5 ...

  2. Android Studio在创建/导入项目的时候,一直处于building “XXX”gradle project info的解决办法

    Android Studio在新建项目或者导入项目的时候,可能会一直处于building “XXX”gradle project info的状态,而且还取消不了,无奈之下只能干掉进程... 还有一种情 ...

  3. CSS 多类选择器

    写的代码多了,就会发现,自己越来越无知了,总以为html css很简单,已经掌握的很熟练了,其实我还差的很多. 平时没有用过css的这种写法  .a.b{display:block;}   上网一查才 ...

  4. html学习第二天—— 第七章——CSS样式基本知识

    外部式css样式,写在单独的一个文件中外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css”为扩展名,在<head>内(不是在<s ...

  5. 简单的后台json,前台解析 操作

    后台: List<PageData> KeyWords=plantDefDetailCSAService.findKeyWords(pd); JSONArray array = new J ...

  6. Android测试之 APK重签名方法

    方法一:命令行重签名 D:\>keytool -helpkeytool 用法: -certreq [-v] [-protected] [-alias <别名>] [-sigalg & ...

  7. HDU1003 简单DP

    Max Sum Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the ...

  8. 【Oracle】oracle利用正则表达式拆分IP地址

    使用oracle提供的regexp_substr()函数,对将IPV4地址分成4段: select v.ip as ip_address, regexp_substr(v.ip,,) as A, re ...

  9. [NOIP2016]换教室 D1 T3 Floyed+期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

  10. 【转】java-String中的 intern()

    转自:http://blog.sina.com.cn/s/blog_69dcd5ed0101171h.html 1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值 ...