ECMAScript和JavaScript的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ECMAScript和JavaScript的区别相关的知识,希望对你有一定的参考价值。

参考技术A

二者区别;

一、定义不同

1、ECMAScript,The specification defined in ECMA-262 中定义的标准,是用于创建通用目的脚本语言的。同义词: ECMAScript 规范。然而ECMA-262是标准的名称,它代表了脚本语言规范ECMAScript。

2、javascript是一种通用目的的脚本语言,遵循 ECMAScript 规范。它是 ECMAScript 语言的一个分支版本。ECMAScript提供脚本语言必须遵守的规则、细节和准则,这些才是其被视为兼容ECMAScript的判断标准。

二、规则不同

1、ECMAScript提供脚本语言必须遵守的规则、细节和准则,这些才是其被视为兼容ECMAScript的判断标准。

2、JavaScript 是我喜欢编程的咖啡味语言(指代 Java 族,译者注)。ECMAScript 是它所基于的规范。通过阅读 ECMAScript 规范,你将学会如何创建脚本语言。通过阅读 JavaScript 文档,你将学习如何使用脚本语言。

拓展资料

JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在html中来实现自身的功能的。 

1、是一种解释性脚本语言(代码不进行预编译)。 

2、主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。 

3、可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。 

4、跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、androidios等)。

5、Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。 

(资料来源:javascript——百度百科)

es6中let,const区别与其用法

ECMAScript 是什么?
首先,我们都知道JavaScript由三部分组成:ECMAScript,DOM,BOM;
其中的ECMAScript是Javascript的语法规范。
ECMAScript定义了很多东西,如:
  • 语法-----解析规则,关键字,语句,声明,操作等
  • 类型-----布尔型,数字,字符串,对象等
  • 原型和继承
  • 内置对象,函数的标准库----------JSON, Math, 数组方法,对象方法等
浏览器兼容:
  目前Google和Firefox浏览器对ES6新特性的兼容最友好。而IE9则有问题。对于不兼容的浏览器,我们可以只用转换工具如,babel。我们使用nodejs的包管理工具npm来安装babel。在我们的js文件前先引入 browser.min.js 。
 
(1)ES6中新增的let关键字
之前我们声明一个变量时,都是使用关键字var,那新增加的let和var有什么不同呢?
 
var的不足之处一:
var arr=[];
for (var i=0;i<10;i++){
     arr[i]=function(){
         console.log(i); 
     };
arr[8]();   // console.log(i);  的结果为 10 
 
同样的换成 let之后就没问题:
var arr=[];
for (let i=0;i<10;i++){
     arr[i]=function(){
         console.log(i); 
     };
arr[8]();   // console.log(i);  的结果为 8
 
这是由于,本来的js是没有块级作用域的,用var定义i时,虽然在for循环中定义,但在执行时,依然会被提升。当执行arr[8]()时,循环已经完成,这时的i=10;所以再去执行 arr[8]()时,console.log(i),i=10;
 
而是用let定义i,i就只能存在与for循环的块级作用域,不会被提升。
(块,只的是 一组{}之间的部分。)
var的不足之处二:
也就是变量提升。var 会被提升定义;let不会。
var a=1;
(function(){
     alert(a);
     var a=2;
})();   //undefined 表示只声明,为赋值;
 
同样的换做let之后:
var a=1;
(function(){
     alert(a);
     let a=2;
})();   //报错: Uncaught ReferenceError: a is not defined(…) 
 
这是因为,用let定义后,变量a的定义不会被提升。且在块级作用域内封闭,不会受到外界a的影响。在使用a(alert(a))时,a尚未定义,所以报错。因此,在使用let时,一定注意,变量要先声明后使用。
 
使用let时注意:
注意一: 在同一块级作用域下,不能重复声明同一个变量。
{
     var a=1;
     let a=2;
}   //报错
{
     let a=1;
     let a=2;
}  //报错
 
注意二:在函数内,不能用let重新声明函数的参数。
function say(word){
     let word=‘hello‘;
     alert(word);
}
say(‘hi‘);  //报错
 
(2)ES6中新增的const关键字
const是常量(contsant)的缩写,与let相比,const专门用来声明一个常量。
特点:
  • 不可修改
     const name=‘a‘;
     name=‘b‘;   //报错
  • 块级作用域
     if(1){
          const name=‘a‘;
     }
     alert(name);  //报错
  • 不存在变量提升,必须先声明后使用
     if(1){
    alert(name);  //报错
          const name=‘a‘;
     }  
  • 不可重复声明同一个变量
     var name=‘a‘;
     const name=‘b‘;  //报错
  • 声明后必须赋值
     const name;   //报错
 
注意:当常量为一个对象时:
  const Person={‘name‘:‘a‘};
  Person.name=‘b‘;
  Person.age=‘13‘;
  console.log(Person)  // {‘name‘:b,‘age‘:‘13‘};  输出正常。
这是由于const声明了一个引用类型的常量,使用的是传址赋值。也就是不修改地址,只修改地址中的值。

以上是关于ECMAScript和JavaScript的区别的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 和 ECMAScript 有啥区别?

ecmascript和javascript的区别?

一文读懂 JavaScript 和 ECMAScript 的区别

var let const 区别

var let const 区别

JavaScript基础 -- ECMAscript