标签:地方 在线课程 循环 结果 前端工程师 方便 通过 mic 标准库
ECMAScript是什么?很多人都很困惑,哪怕是工作3至5年前端工程师也困惑,ECMAScript是什么?它跟JavaScript有什么关系?
题目:JavaScript由3部分组成,分别是:ECMAScript,BOM和(?)。
从题目中我们就可以看出来了,ECMAScript是JavaScript的组成部分。
ECMAScript就是JavaScript中的语法规范!ECMAScript是属于国际标准化的语言,所有浏览器开发商都要按照它制定的标准来开发浏览器。开发者也一样,按照它的规定来编程代码。
了解了ECMAScript之后,那什么是ES6呢?
ES6是ECMAScript 6的缩写简称,这个好理解。顾名思义,它是ECMAScript的第6个版本,也就是说它有更早的版本,以后还会有更多版本。
1996 年?11 月,Netscape 公司,决定将 JavaScript 提交给国际标准化组织 ECMA。次年,ECMA发布 ECMAScript。这个版本就是 ECMAScript 1.0 版。
1998 年?6 月,ECMAScript 2.0 版发布。
1999 年?12 月,ECMAScript3.0 版发布,成为 JavaScript 的通行标准,得到了广泛支持。
2007 年10 月,ECMAScript4.0 版草案发布,对 3.0 版做了大幅升级,但是,以 Yahoo、Microsoft、Google为首的大公司,反对 JavaScript 的大幅升级,主张小幅改动,各方分歧太大,争论过于激进,ECMA 开会决定,中止 ECMAScript 4.0 的开发
2009 年?12 月,ECMAScript5.0 版正式发布。
ES6 给开发者带来很多令人激动的特性,其中let关键字就是其中之一。
var arr = [ ];
for(var i=0; i<10; i++){
arr [i] = function(){
alert(i)
}
}
arr [8](); //结果:10
var arr = [ ];
for(let i=0; i<10; i++){
arr[i] = function(){
alert(i)
}
}
arr[8](); //结果:8
那么,什么是块级作用域,怎么才算一个块级作用域?
任何一对花括号(这玩意:{ })中的语句都属于一个块,在花括号里面用let定义的所有变量在花括号外都是不可见的,我们称之为块级作用域。
代码中,for循环含有有{ },也就是含有了块级作用域,每个变量 i 都只是在自己的作用域起作用,例如:第10次循环中的 i 的值不会影响到到第9次循环。
var a = 1;
function show(){
alert(a);
var a = 2;
}
show();//结果:undefined
var a = 1;
function show(){
var a;
alert(a);
var a = 2;
}
show();//结果:undefined
var a = 1;
function show(){
alert(a);
let a = 2;
}
show();// 结果:报错a is not defined
用let关键字来定义a;这样a在代码块内就不会提升了。
那为什么又报错了呢,因为用let声明的变量,在其块级作用域内是封闭的,是不会受到外面的全局变量a影响的,并且要先声明再使用,所以a的值即不是1(因为不受外面的影响),也不是undefined(因为先声明后使用),更不是2,未声明定义就使用,报错。
{
var a =1;
let a =2; //报错,因为a已经用var声明过
}
{
let a =1;
let a= 2; //还是报错,a已经用let声明过。
}
function say(word){
let word = ‘hello Jack‘; //报错:用let重新声明word参数
alert(word)
}
say(‘hello Lili‘);
用let声明变量只在块级作用域起作用,适合在for循环使用,也不会出现变量提升现象。同一个代码块内,不可重复声明的相同变量,不可重复声明函数内的参数。
更多资深讲师相关课程资料、学习笔记请入群后向管理员免费获取,更有专业知识答疑解惑。入群即送价值499元在线课程一份。
QQ群号:560819979
敲门砖(验证信息):阳光三叠
标签:地方 在线课程 循环 结果 前端工程师 方便 通过 mic 标准库
原文地址:http://blog.51cto.com/13477015/2177662