ECMAScript学习笔记(2)--ES6新增let、箭头函数理解-创新互联

1、关于let
用来锁定块程序内的变量非常实用:

站在用户的角度思考问题,与客户深入沟通,找到临翔网站设计与临翔网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、成都做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、虚拟空间、企业邮箱。业务覆盖临翔地区。
var a = [];

for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 输出10
用var i 并没有将i值锁定(var定义的i会变量提升,作为全局变量),数组a中每个成员中的i都是公用一个变量空间,所以最后i为10,a[1]()-----a[10]()输出均为10

var a = [];

for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 输出6

用let i 会针对for每次循环的{ }块代码重新定义变量空间,js解释引擎会自动记录上次i值,所以a的每个成员的i值都是不一样的!

2、箭头函数使函数定义变得更简洁:

var f = () => 5;
// 等同于
var f = function () { return 5 };

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};

箭头前一般为传入参与,箭头后一般返回参数,没有传入参数可以用(),如果没有返回参数可以用{}把语句包含。

关于箭头函数有几个使用注意点:

(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。如下:

{
var ft=function(){
this.a='a';
this.b='b';
this.c={
a: 'a+';
b: ()=>{
return this.a;
}

              }

          }

          console.log(new ft().c.b());  //显示 a,不是a+,因为this指向在定义箭头函数时就已经被确定了箭头函数外的this相同

}

比较非箭头函数写法结果:

{
var ft=function(){
this.a='a';
this.b='b';
this.c={
a: 'a+';
b: fuction(){
return this.a;
}

              }

          }

          console.log(new ft().c.b());  //显示 a+,不是a,此时的 this是在对象被使用的时候定义,即被调用的时候定义,this指向c

}

(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

(4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
先做个记录,有时间再分析

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:ECMAScript学习笔记(2)--ES6新增let、箭头函数理解-创新互联
文章分享:http://csdahua.cn/article/gjcoo.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流