求解一个简单的JS问题

LJ_KB 2014-08-13 05:30:42
<script type="text/javascript">
var local = "out";
function test() {
alert("out--->" + local);
var local = "inner"; // 关键地方
alert("inner--->" + local);
}
test();
</script>
上面注解处不定义var 和定义 var 对 alert("out--->" + local);的值有影响,为什么有影响呢?重新定义var local的原因吗?
...全文
194 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingyuan18 2014-08-13
  • 打赏
  • 举报
回复
变量值域问题
LJ_KB 2014-08-13
  • 打赏
  • 举报
回复
引用 2 楼 longtian1213 的回复:
在一个JS函数中,如果没有用var声明,则是全局变量,如果用了var声明,不管在什么地方声明,变量声明都会提前到函数顶端,你的代码就相当于这样:

.<script type="text/javascript">
        var local = "out";
        function test() {
               var local ;
                alert("out--->" + local);
                 local = "inner";    // 关键地方
                alert("inner--->" + local);
        }
        test();
</script>

声明在前而初始化在后,第一个应该是undefined吧
我现在明白了,我就是下午看了你的那个JS问题之后才写的,然后也查了些资料……
S117 2014-08-13
  • 打赏
  • 举报
回复
在一个JS函数中,如果没有用var声明,则是全局变量,如果用了var声明,不管在什么地方声明,变量声明都会提前到函数顶端,你的代码就相当于这样:

.<script type="text/javascript">
        var local = "out";
        function test() {
               var local ;
                alert("out--->" + local);
                 local = "inner";    // 关键地方
                alert("inner--->" + local);
        }
        test();
</script>

声明在前而初始化在后,第一个应该是undefined吧
  • 打赏
  • 举报
回复
自己看下作用域链就明白了。

50,537

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧