在javascript中,开发者可以在任何地方声明变量,随便在哪里都可以var一个变量出来。这种自由,有时候其实是一个坑。如何避免这种坑,开发者需要了解清楚变量是如何声明的。
在javascript中,无论变量是否会被执行,所有的var都会被提前到该逻辑函数的顶部执行。举个栗子:
function foo() { var result = 10 + value; var value = 10; console.log(result); } foo() // NaN 为什么result会是NaN呢?主要是因为javascript会把以上代码解释成这样子 function foo() { var result; var value; result = 10 + value; value = 10; console.log(result); }