前向引用的概念很简单,简单的理解就是使用变量前要先声明,如果使用了未声明的变量,就属于前向引用。
以JavaScript写一段代码来做一个简单示例。
console.log(nott); // Uncaught ReferenceError: nott1 is not defined let nott = '我还没被定义呢你就想引用我';
这里,因为nott的定义在console.log之后,所以就会报nott未定义的错误,这就是前向引用。
另外的我们再来看一个例子。
console.log(nott); // undefined var nott = '我还没被定义呢你就想引用我';
这里不会报错,是因为JavaScript非严格语法的特殊性,它使用var关键字会有一个声明提升的特性,即变量/函数的声明会提前到最前面,赋值则保留在原位置。因此打印出来的值是undefined,这也是前向引用导致的问题。
因此我们在使用变量之前必须要检查变量是否已经定义,否则就会因为前向引用而导致非预期的问题。当然了,使用一些强大的IDE会为我们检查出这些问题并给予提示。
事实上,前向引用这个概念可以从变量扩展到函数、类等。在未定义【某个东西】前使用这【某个东西】,就叫做前向引用。我想你那么聪明,一定能依此类推的。
"我们都曾经认为,有许多事情是不可以放手的。"