美文网首页
js变量作用域问题

js变量作用域问题

作者: oliverhuang | 来源:发表于2015-10-11 21:22 被阅读27次

讨论一个js变量作用域的问题

<script type="text/javascript">
  var myvar = "my value";

(function(){
    console.log(myvar);
    var myvar = "local value";
})()

</script>

不论是var myvar = "my value";还是myvar = "my value";输出的结果都是undefined,内部定义了var myvar,但是因为没有赋值所以为undefined。这个和把它注释掉是一样的。

如果改为

<script type="text/javascript">
  var myvar = "my value";

(function (){
    console.log(myvar);
    myvar = "local value";
})()

</script>

就会出现奇妙的事情了,可以看到输出结果为my value,因为将myvar定义为了全局变量,这样先赋值的my value就成为了输出结果。

所以综上,为了简单,由于存在变量声明提升,一个函数中所有的var语句应尽可能地放在接近函数顶部的地方。这大大地提升了程序代码的清晰度。

相关文章

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • js中作用域与作用域链

    js中作用域与作用域链 作用域 *作用域基本概念 作用域一般指变量的作用范围,变量分为全局变量和局部变量,对应的作...

  • 作用域与变量提升

    作用域与变量提升 作用域 JS中变量的作用域有全局作用域和局部作用域两种,作用域简单来讲就是变量与函数的可访问范围...

  • 闭包

    导学:变量作用域:全局作用域、局部作用域 js中,函数内部可以直接读取全局变量 *链式作用...

  • JavaScript快速上手:关于闭包的知识分享

    JS中变量的作用域 在理解闭包之前,我们得弄清楚JS中变量的作用域原理,它分为全局作用域和局部作用域,它有一...

  • JavaScript快速上手:关于闭包的知识分享

    01 JS中变量的作用域 在理解闭包之前,我们得弄清楚JS中变量的作用域原理,它分为全局作用域和局部作用域,它有一...

  • 浅谈JS作用域链

    浅谈JS作用域链 作用域 作用域(scope)就是变量访问规则的有效范围。作用域外,无法引用作用域内的变量;离开作...

  • JS高级-闭包、沙箱

    作用域,作用域链,预解析 变量:局部变量、全局变量 作用域:变量的使用范围 js中没有块级作用域,一对括号中定义的...

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • 2019-08-13JS里面的作用域Scope

    作用域指一个变量的作用范围。 JS的作用域 在JS中,有两种作用域 全局作用域直接编写在script标签中 JS代...

网友评论

      本文标题:js变量作用域问题

      本文链接:https://www.haomeiwen.com/subject/jofocttx.html