美文网首页
变量作用域

变量作用域

作者: 懒人如巍 | 来源:发表于2018-06-02 10:32 被阅读0次

作用域scope

一个变量的作用域是程序源代码中定义这个变量的区域。全局变量拥有全局作用域,在js代码中的任何地方都是有定义的。然而在函数内声明的变量只在函数体内有定义。
他们是局部变量,作用域是局部性的。函数参数也是局部变量,他们只在函数体内有定义。

在函数体内,局部变量的优先级高于同名的全局变量。如果在函数内声明的一个局部变量或者函数参数中带有的变量和全局变量重名,那么全局变量就被局部变量所遮盖。

var scope = "global";       // 声明一个全局变量
function checkscope(){
    var scope = "local";  //声明一个同名的局部变量
    return scope;        //返回局部变量的值,而不是全局变量的值
}
checkscope();          // "local"

尽管在全局作用域编写代码时可以不写var语句,但声明局部变量时则必须使用var语句。

如果不这样做会怎样?

scope = "global";   //声明一个全局变量,甚至不用var来声明
function checkscope2(){
   scope ="local";    //修改了全局变量!!!
   myscope = "local";  //显式的声明了一个新的全局变量
   return [scope,myscope];  //返回两个值
}
checkscope2();    //["local" , "local"]:产生了副作用
scope    // "local":全局变量修改了
myscope  // "local":全局命名空间搞乱了

函数定义是可以嵌套的。由于每个函数都有他自己的作用域,因此会出现几个局部作用域嵌套的情况。

例如:

var scope = "global scope"; // 全局变量
function checkscope3(){
    var scope = "local scope";  //局部变量
    function nested(){
        var scope = "nested scope";  //嵌套作用域内的局部变量
        return scope;    //返回当前作用域内的值
     }
     return nested();
}
checkscope3();   // "nesed scope" 嵌套作用域
scope    //"global scope"

相关文章

  • 第四章 作用域和内存问题

    变量的作用域? 变量作用:起作用域:区域,范围变量起作用的地方 变量的生命周期,变量生于这个作用域,死于这个作用域...

  • JS作用域链

    作用域 变量的作用域 变量的作用域有两种:全局变量和局部变量。 全局作用域: 最外层函数定义的变量拥有全局作用域,...

  • 变量作用域

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

  • 【前端】-023-JavaScript-进阶篇-变量作用域

    变量作用域 JavaScript中变量的作用域 采用静态作用域(变量定义的位置决定了变量的引用) 没有块级作用域,...

  • php基础知识回顾-1

    1.变量作用域 php变量有四种作用域:局部作用域、全局作用域,静态作用域、参数作用域 在局部调用全局变量需要使用...

  • js中作用域与作用域链

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

  • 作用域与变量提升

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

  • 关于作用域链

    作用域 先来谈谈变量的作用域变量的作用域无非就是两种:全局变量和局部变量。全局作用域:最外层函数定义的变量拥有全局...

  • JavaScript关于作用域、作用域链和闭包的理解

    作用域 先来谈谈变量的作用域变量的作用域无非就是两种:全局变量和局部变量。全局作用域:最外层函数定义的变量拥有全局...

  • JavaScript 中的变量作用域

    JavaScript 中的变量作用域 JavaScript中的变量作用域被定义为函数作用域。 变量的值在定义该变量...

网友评论

      本文标题:变量作用域

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