使用过javascript的朋友都知道,在javascript中,变量的使用是个比较头疼的问题,经常会产生 些比较匪夷所思的结果。究其原因,大多是对javascript的变量相关知识了解得不够透彻。
javascript中的所有变量都是类型松散的,不同于其他面向对象语音的变量声明都是强类型的.因此Javascript 的变量声明是不包括类型的。通过var关键字或者直接写变量名来声明一个变量,如: var v = 1; v=1;
在函数内部通过var关键字声明的变量将是函数级别的变量,其作用域仅仅限于函数内部。如: 复制代码 代码如下: <script type="text/javascript" language="javascript"> function foo() { var v=1; alert(v); }
alert(v); </script>
运行结果:1 变量“v”未定义
通过上面的分析,可以发现关键字var主要作用 是定义函数级别的变量。
细心的朋友可以会问,如果在函数内部和外部定义了相同的变量,会是什么样的结果呢?如: 复制代码 代码如下: <script type="text/javascript" language="javascript"> var v=1; function foo() { alert(v); var v=2; }
foo(); </script>
运行结果:undefined !!!!!也许有人会比较郁闷了,v明明白白的定义在函数foo()体外,为什么会是 undefined呢?这就涉及到javascript的解析了。根据经验,javascript对于函数体内变量的解析过程是: 搜索所有的 var关键字,将其变量声明放到函数体的最前面,赋值和使用仍然保持不变,这样,上面的javascript实际上是等同于: 复制代码 代码如下: <script type="text/javascript" language="javascript"> var v=1; function foo() { var v; alert(v); v=2; }