一、var和let命令
作用域
ES5的作用域只有全局作用域和函数作用域,这会带来很多问题,比如常用的for
循环中var
声明的i
只作为计数来控制循环,但是循环结束后i
任然存在,因为i
的作用域是全局的。所以我们循环计数的标识往往会变成i j k ......
,这是我们不希望看到的现象。
for (var i = 0; i < 5; i++) { }console.log(i); // 5
ES6中新增了let
命令,和var
类似都用来声明变量,但let
的作用域是ES6新增的块级作用域,仅在当前的代码块中有效。
for (let i = 0; i < 5; i++) { }console.log(i); // errorlet j = 1;if (true) { let j = 2; console.log(j); // 2}console.log(j); // 1
变量提升
ES5还存在变量提升的问题,即“函数及变量的声明都将被提升到函数的最顶部”,在一些规范的JavaScript代码中会发现大量的变量都集中在js脚本文件的顶部进行声明,这是为了避免变量提升现象导致的隐患。
console.log(m); // 输出为 undefined ,并没有报错,这说明 m 是存在的var m = 1;// 其实上述代码因为变量提升而被执行为:var m;console.log(m); m = 1;
为了避免变量提升带来的隐患,let
禁止在变量声明前使用。
console.log(m); // undefinedvar m = 1;console.log(n); // errorlet n = 1;
二、const
const
同样是ES6新增的命令,与var let
声明变量不同,const
声明的是常量,const
声明的常量无法改变其值。
const PI = 3.1415; PI = 1; // error
三、箭头函数
ES5中我们常见的匿名函数是这样的。
function() { console.log(1); }
箭头函数简化了这种写法,去掉了function
并在()
和{}
之间添加了=>
。
() => { console.log(1); }
如果函数是参数运算等情况的话那么可以进一步简化。
function (x) { return x * x; }// 等同于x => x * x;
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦