美文网首页让前端飞前端开发笔记
javascript之为什么要用let代替var

javascript之为什么要用let代替var

作者: 子龙0322 | 来源:发表于2018-11-17 23:50 被阅读5次

javascript中用 var 声明变量,存在以下问题:

  1. 声明的变量为全局变量(被誉为JS最大设计缺陷之一):

var a = 123;

console.log(window.a); // 123

这造成了在开发大型项目或引入三方库时,很容易覆盖已有变量。

  1. 变量提升

console.log(a); // undefined

var a = 1;

这种奇异的行为会让正常思维的人很困惑。

  1. 变量可被重复声明

var a = 1;

console.log(a); // 1

var a = 2;

console.log(a); // 2

  1. 没有「块级作用域」的概念

if (true) {

  var a = 1;

}

console.log(a); // 1


for (var i = 0; i < 1; i++) {

  var a = 5;

  // ...

}

console.log(i); // 1

console.log(a); // 5

没有块级作用域,既会污染全局变量,也使循环中的异步代码不能如意执行:

for (var i = 0; i < 3; i++) {
  console.log('for: ' + i);

  setTimeout(() => {
    console.log('setTimeout: ' + i);
  })
}
// for: 0
// for: 1
// for: 2
// ③ setTimeout: 3 

以上问题,在开发中很容易引起各种bug,让初学者摸不着头脑。

而 let 则将以上问题统统解决了!

相关文章

  • javascript之为什么要用let代替var

    javascript中用 var 声明变量,存在以下问题: 声明的变量为全局变量(被誉为JS最大设计缺陷之一): ...

  • let与const

    let用法 ES6新增了let命令,用法与var类似,主要用于声明变量,且逐渐代替var,与var的区别为,其声明...

  • TypeScript基础-变量声明

    使用let替代var JavaScript中变量声明方式有:let var const。TypeScript中推荐...

  • JS中var、let、const区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • js中const,var,let区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • ES6基础知识

    let const es6 提供了新的声明方式代替以前的 var let construction var不支...

  • ES6语法规范---摘抄自阮一峰大大的书

    块级作用域 (1)用let代替var,var有变量提升,而let没有 var声明相当于全局变量,let有块级作用域...

  • ES6 几个语法。

    )])1.定义变量使用let 代替var ---作用域 { let name = 'xiaoming' } co...

  • Vue var ---let---const

    1.在javascript中有三种声明变量的方式:var let const。 let var const的区...

  • var、let、const

    JavaScript中的变量声明目前有三种:var、let、const。let和const是JavaScript里...

网友评论

    本文标题:javascript之为什么要用let代替var

    本文链接:https://www.haomeiwen.com/subject/cilwfqtx.html