美文网首页H5前端资料技术分享
var 为什么会被 let 取代

var 为什么会被 let 取代

作者: JoanHale | 来源:发表于2019-12-28 10:29 被阅读0次

先看用到 var 的一段代码

functiondoSomething(){

for(vari=0;i<5;i++){

console.log(i)

}

console.log('Finally '+i)

}

doSomething()

打印结果:

0

1

2

3

4

Finally 5

i 在 for 语句里定义的,为什么在 for 语句外面仍然打印出来值了呢??

再看用到 let 的一段代码

functiondoSomething(){

for(leti=0;i<5;i++){

console.log(i)

}

console.log('Finally '+i)

}

doSomething()

打印结果如下:

0

1

2

3

4

/Users/dkvirus/Documents/study/study-typescript/ex1/var.js:5

    console.log('Finally ' + i)

                            ^

ReferenceError: i is not defined

let 定义的变量 i 符合我们的常识,i 的作用域只在 for 语句里,在 for 外部用 i 变量报错未定义。

结论:

let 和 const 定义变量的作用域都是离变量最近的那个块内;

var 定义变量的作用域是离变量最近的那个方法内。上面,用 var 定义的 i 变量的作用域为离 i 最近的方法内,即 i 的作用域在 doSomething 内,所以在 for 语句外也能打印出 i 的值。

相关文章

  • var 为什么会被 let 取代

    先看用到 var 的一段代码 functiondoSomething(){ for(vari=0;i<5;i++)...

  • ES6语法

    let取代var const声明常量 import取代require 使用export取代module.expor...

  • ES6之编程风格

    1.块级作用域 1) let完全取代var建议不再使用var命令,而是使用let命令取代。2) 全局常量和线程安全...

  • ES6特性

    1. ES6 变量声明:var let,let 是为了取代var ,但是兼容性不好 var 只有一层作用域,let...

  • TypeScript 学习笔记 之 变量声明

    TS 跟最新的 JS 标准一样支持三种变量声明类型:var,let,const。其中 let 是为了取代 var ...

  • 前端面试之ES6

    var、let 和 const的区别 var变量var 声明的变量会被提升到作用域的顶部var 声明的变量会被挂载...

  • 了解es6

    vs code中文设置: let和const 1.let定义变量,为了取代var 2.const定义常量 箭头函数...

  • ES6总结

    vs code中文设置: let和const 1.let定义变量,为了取代var 2.const定义常量 箭头函数...

  • 了解es6

    vs code中文设置: let和const 1.let定义变量,为了取代var 2.const定义常量 箭头函数...

  • JavaScript编程规范

    1. 声明(块级作用域) (1)let取代var 上面代码如果用var替代let,实际上就声明了两个全局变量,这显...

网友评论

    本文标题:var 为什么会被 let 取代

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