本文所讲的内容对于帮助理解旧脚本很有用。
但这不是我们编写新代码的方式。
在本教程最开始那部分的 变量 这章中,我们提到了变量声明的三种方式:
const
var
声明与
let
相似。大部分情况下,我们可以用
let
代替
var
或者
var
代替
let
,都能达到预期的效果:
但实际上
var
却是一头非常不同的,源自远古时代的怪兽。在现代脚本中一般不再使用它,但它仍然潜伏在旧脚本中。
如果你不打算接触这样的脚本,你甚至可以跳过本章或推迟阅读本章。
另一方面,了解将旧脚本从
var
迁移到
let
时的区别,以避免奇怪的错误,是很重要的。
“var” 没有块级作用域
用
var
声明的变量,不是函数作用域就是全局作用域。它们在代码块外也是可见的(译注:也就是说,
var
声明的变量只有函数作用域和全局作用域,没有块级作用域)。
举个例子:
“var” 声明的变量,可以在其声明语句前被使用
当函数开始的时候,就会处理
var
声明(脚本启动对应全局变量)。
换言之,
var
声明的变量会在函数开头被定义,与它在代码中定义的位置无关(这里不考虑定义在嵌套函数中的情况)。
那么看一下这段代码: