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

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

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

今天做了一个功能,埃,突然一下觉得自己很SB了。一个简单的事件冒泡阻止都想了好半天。是的,有的时候就这样,上面一催下来,自己就有点没辙了。功能也是赶阿赶的,很多东西写起来就有点短路了。有的时候真希望公司上班的时候能不能多一点设计少一点没有脑袋的需求变更。我来公司后,很多地方觉得还是有了改善,不过还有一些地方需要程序员们坚持,坚持再坚持。很多时候不要站在自己的角度去考虑问题。毕竟一个公司要运作,BOSS和销售人员还是居功至伟的。

上一篇文章也说过了,作为一名优秀的技术人员必须要有良好的基础。更加需要的是健康的身体和良好的RP。这个相信不要我多说拉吧,每个地方的HR都这么说过了。