您的位置:首页 > Web前端 > JavaScript

javascript的执行顺序问题

2008-10-23 14:57 483 查看
Published by canque on January 3, 2008 02:53 pm under [web发展] Tags: javascript

javascript是一种弱类型,松散灵活的解释型语言,但是它的解释过程仍然遵循一定规范。

看看下面这个例子(来自AJAXBBS):
(先不要急着运行,先想想结果。)

PLAIN TEXT

JavaScript:

<script type="text/javascript">

<!--

var a="xx";

function c(){

alert(a);

var a=0;

alert(a);

}

c();

alert(a)

//-->

</script>

很多人都会认为输出的执行结果应该是这样:xx 0 xx。
因为函数内第一个a没有声明,应该默认为全局变量,所以输出xx;第二个a是函数的局部变量,输出0;第三个输出全局a的值xx。
然而实际上,输出结果却是 undefined 0 xx。

为什么不是xx却是undefined?
其实,这里面除了局部变量和全局变量的知识外,更容易被忽视的问题是javascript代码的执行顺序问题。

javascript总是先声明变量,再执行代码。事实上,上面的代码等价于:

PLAIN TEXT

JavaScript:

<script type="text/javascript">

<!--

var a="xx";

function c(){

var a;

alert(a);

a=0;

alert(a);

}

c();

alert(a)

//-->

</script>

因为第一个a没有赋值,所以结果自然是undefined。

看看这段代码或许会更明白:

PLAIN TEXT

JavaScript:

<script type="text/javascript">

<!--

var a="xx";

function c(){

a=12;

alert(a);

var a=0;

alert(a);

}

c();

alert(a)

//-->

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: