JavaScript 不存在块级作用域

这个问题,今天是一个朋友问出来的,估计是小鸟。但是没关系,我以前也是小鸟哈。有一段这样的代码。

他的问题是,为什么第一次出来的是 undefined 第二次是 abc.

问题很简单,就是一个作用域的问题。因为 JavaScript 是没有块级作用域的。也就是说。所有的代码都是一行行的执行。上述代码也许在 Java 就不一样了。解释型的语言就是这样子。第一个 scope 定义再全局中。第二个 scope 虽然有定义为 『123』 但是在 alert 语句的时候 var scope 语句并未执行。再整个函数体中隐藏了同名的全局变量。虽然有定义,但是在执行 var 之前。它是不会被初始化的。
所以为什么 taobo ude,ali ued 经常说的一句话 “所有的变量声明集中起来,全部放在顶部是一个好习惯。」 这里就能清除的体现了。

發表回覆

你的電郵地址並不會被公開。 必要欄位標記為 *