这就是JavaScript的特色 :)JavaScript没有块级作用域.
函数中声明的所有变量,无论是在哪里声明,在整个函数中它们都是有定义的.将所有的变量声明集中起来放置在
函数的开头是个好的编程习惯.From: JavaScript: The Definitive Guide

解决方案 »

  1.   

    js有局部变量和全局变量之分.
    定义在函数里的变量是局部的,函数外面是全局.但对此,js解析引擎有一些自己的理解方式.在执行函数时,若js引擎发现里面有未定义的变量被使用,它会把该变量认为是全局变量.注意,只要没有var定义,使用到的变量js就认为是全局变量.于是在A()之后,当前页面已经多了个全局变量text_a.
    所以之后运行的B()就里就可以使用了.这种隐性定义全局变量的方式显然不是一个好的编程习惯,但可以简化js引擎分析.所以建议函数里使用的变量一律用var 加以定义
    如下把A()改下
    function  A()

    var text_a="i do my best to  do the things i want to do!" alert( "function A"+text_a)

    }现在text_a就是能够理解的局部变量了
    B()已经找不到它了