A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王毅 中级黑马   /  2013-3-13 21:04  /  1076 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在JS里面

声明局部变量和全局变量的区别
首先全局变量定义作用于全局

<script>

var i;

</script>

局部变量作用于块

<script>

var i;

function abc()

{

    var a;

    b=10;

}

</script>

这里的a为局部变量,但是b是全局变量
因为只要声明变量时不声明var就表示该变量就默认转为全局变量
重点是:函数中声明的变量的作用域在整个函数,不分块级作用域

例子:
<SCRIPT LANGUAGE="javascript">
var i=1;

function a2()
{
  alert(i);
  var i = 2;
  alert(i);

  if(true){if(true){if(true){var a=3;}}}

  alert(a);
}

</script>

整个例子中第一个alert会显示undefine 未声明
因为不管全局变量.
局部的变量的优先级高于全局变量
但是只要据我猜测是当调用函数的时,会先加载所有的变量,带不会带值,所以这里就会出现undefine,据我试验,发现只要是变量都会在SCRIPT脚本运行时先加载,但不会带值!
(原因是:当局部变量在函数嵌套函数的时候,当在最里层的函数碰到变量时会调用变量解析器,这个时候变量解析器首先会在这个函数内找到该变量,如果找不到就会继续往外层寻找到该变量知道找到为止,找不到会报错)

第二个alert会显示2,因为已经复制了

第三个alert会显示3,因为不管a声明在哪里只要在函数内,他的作用域就是函数内.

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马