3.13 疑难解惑

疑问1:ECMAScript和JavaScript是什么关系?

要清楚这个问题,需要回顾历史。1996年11月,JavaScript的创造者NetScape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国际标准。1997年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。

该标准从一开始就是针对JavaScript语言制定的,但是之所以不叫JavaScript,有两个原因:一是商标,Java是Sun公司的商标,根据授权协议,只有NetScape公司可以合法地使用JavaScript这个名字,且JavaScript本身也已经被NetScape公司注册为商标;二是想体现这门语言的制定者是ECMA,不是NetScape,这样有利于保证这门语言的开放性和中立性。

因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。

疑问2:普通函数和箭头函数的区别是什么?

普通函数是很早就提出的,而箭头函数是ES6提出的,它们两个在语法上不一样,并且它们this的指向也不一样。对于普通函数内的this来说,如果没有绑定事件元素,this指向的window,或者在闭包中this指向的也是window;如果函数绑定了事件,但并没有产生闭包,this指向的是当前调用的事件对象。箭头函数内this指向是父作用域。

箭头函数不能使用arguments,普通函数可以使用,arguments是以集合的方式获取函数传递的参数。

箭头函数不能实例化为构造函数,而普通函数可以进行实例化。