js是我的薄弱环节,这次花几个月时间把它学习一下

真的是学无止境呀!你无论怎样努力,总会有你不熟悉的东西出现,那么你就必须要搞定他,或者至少在这个领域要有广度认知。

ECMAScript 和 JavaScript 的关系

一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?

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

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

因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)。日常场合,这两个词是可以互换的。

引用原文,其实就是想说,这俩玩意其实就是一回事,前者是规矩,后者是规矩的产物。

1、let
和var一样,但是你要用它之前,要记住,要先声明变量,在使用他(好像我在使用是一般不会在后面才申明变量呀!)

{
  let a = 10;
  var b = 1;
}

ES6入门的原文作者,有提到更多的例证,我也不是很懂,这里就用一个例子,后面附上原文,敬请翻阅。
2、const
这个好像我是第一次看到,在js的世界里,他可以声明一个不可变的变量,一旦被申明,即不可修改

const PI = 3.14;
PI  //3.14
PI = 3;
// TypeError: Assignment to constant variable.

这说明,一旦声明就不能被改变;const 和let 一样,也只在自己的代码块内有效

if (true) {
const MAX = 5;
}
MAX // Uncaught ReferenceError: MAX is not defined

const foo = {};

// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123
// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: “foo” is read-only
const 不是 不能改,只是变量名不能改吧,他内存保存的数据不得改动,可以执行添加,和编辑属性

3、es6 引入了一个叫代码块的东西,上面的let 只在他的代码块内生效,跳出去即无法使用,这貌似是作用域的严格化呀(可能这么理解不是很对,以后有新认知来改正)

4、ES6申明变量有6中方法
a.let
b.const
c.import
d.class


参考文献

相关文章