`
阅读更多

js的作用域

我们要明确最基本的一点:

(1)在函数外面无法访问函数内的局部变量.

 

console.clear();
function test()
{
    var name2="whuang";
  console.log("name:"+name2);
  
}
console.log(name2);
test();

 运行时报错

 

 

解说:

变量name2是在方法test中定义的局部变量,所以在test方法外面是不可见的.

下面的代码是正确执行的:

 

var name2="whuang";
function test()
{
    
  console.log("name:"+name2);
  
}
console.log(name2);
test();

 

 

下面的代码会报错

 

console.clear();
function test()
{
    function inTest()
    {
      var name3="whuang";
      console.log("name:"+name3);
    
    }
  
    console.log(name3);
}

test();

 

 解说:name3是方法inTest里面的局部变量,所以在inTest方法外面是无法访问的.

 

 

 

 

 

(2)函数内部可以访问函数外面定义的局部变量

 

function test()
{
  var name3="whuang";
    function inTest()
    {
      
      console.log("name:"+name3);
    
    }
    inTest();
}

test();

 运行结果:

 

 

解说:在inTest方法内部可以访问inTest方法外面定义的局部变量.

 

(3)js的私有成员变量

通过以上两点,我们可以实现js中的私有成员变量

 

function Person()
{
  this.username="whuang";
  var sex='man';
 this.getSex=function()
  {
    return sex;
  }
  this.setSex=function(sex2)
  {
    sex=sex2;
  }
}

var person2=new Person();
console.log("username:"+person2.username);

person2.username="mudan";
console.info("username:"+person2.username);

console.info("sex:"+person2.sex);

 运行结果:

 

username:whuang
 
username:mudan
 
sex:undefined

解说:通过对象person2.sex无法访问到sex,因为sex不是Person的成员变量.

但是可以通过getSex方法和setSex方法访问

 

 

范例

 

function Person(name){ 
      
    this.getName=function(){ 
       return name; 
    }; 
  
    this.setName=function(value){ 
       name=value; 
    }; 
} 
  
var person=new Person("zxj"); 
console.log(person.getName());    //zxj 
person.setName("Greg"); 
console.info(person.getName());    //Greg

 运行结果:

 

 

 

注意:

(1)在函数外面无法访问函数里面声明的局部变量(使用var声明的);

(2)初始化未经声明的变量,总会创建一个全局变量

(3)字面量:使用json格式创建单例对象.例如{name:"whuang"}

参考:http://www.cnblogs.com/zxj159/archive/2013/06/03/3115139.html

http://blog.csdn.net/hw1287789687

  • 大小: 19.3 KB
  • 大小: 16.3 KB
  • 大小: 12 KB
  • 大小: 33.4 KB
  • 大小: 25.2 KB
0
0
分享到:
评论

相关推荐

    javascript执行环境及作用域详解_.docx

    javascript执行环境及作用域详解_.docx

    JavaScript作用域示例详解_.docx

    JavaScript作用域示例详解_.docx

    JavaScript作用域示例详解

    今天这篇文章对JavaScript作用域示例详解的介绍,希望能帮助大家更好的学习JavaScript。 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命...

    【JavaScript源代码】JS难点同步异步和作用域与闭包及原型和原型链详解.docx

    JS难点同步异步和作用域与闭包及原型和原型链详解  目录 JS三座大山同步异步同步异步区别作用域、闭包函数作用域链块作用域闭包闭包解决用var导致下标错误的问题投票机闭包两个面试题原型、原型链原型对象原型链...

    JS 作用域与作用域链详解

    1. 在JS中使用的是词法作用域(lexical scope) 不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量(global scope) 在函数内声明的变量具有函数作用域(function scope),属于局部变量 局部变量...

    Javascript变量的作用域和作用域链详解

     说起变量第一个要说到的肯定就是作用域,正是因为不熟悉JS的作用域,往往就会把面向对象的作用域张冠李戴,毕竟有些东西总是习惯性的这样,但是并不是每次照搬都是可以的,那么下一个问题就来了,js到底是什么作用...

    详解JavaScript作用域和作用域链

    JavaScript 中有一个被称为作用域(Scope)的特性。虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,本文我会尽我所能用最简单的方式来解释作用域和作用域链,希望大家有所收获! 作用域(Scope) 1. 什么是...

    javascript 作用于作用域链的详解

    一、JavaScript作用域 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种...

    javascript执行环境及作用域详解

    主要为大家详细介绍了javascript执行环境及作用域,分别针对javascript执行环境及作用域进行探讨,感兴趣的小伙伴们可以参考一下

    详解JavaScript 作用域

    JavaScript 函数作用域: 作用域在函数内修改。 JavaScript 局部作用域 变量在函数内声明,变量为局部作用域。 局部变量:只能在函数内部访问。 // 此处不能调用 carName 变量 function myFunction() { var carName...

    JS作用域链详解

    本文实例为大家分享了JS作用域链的相关内容,供大家参考,具体内容如下 1、所有全局变量和函数都是作为window对象的属性和方法创建的。 2、在某个方法函数的作用域中,所有代码执行完之后,该作用域被销毁,保存在...

    JavaScript作用域链实例详解

    本文实例讲述了JavaScript作用域链。分享给大家供大家参考,具体如下: 跟其他语言一样,变量和函数的作用域揭示了这些变量和函数的搜索路径。对于JavaScript而言,理解作用域更加重要,因为在JavaScript中,作用域...

    javascript作用域和闭包使用详解

    作用域的嵌套将形成作用域链,函数的嵌套将形成闭包。闭包与作用域链是 JavaScript 区别于其它语言的重要特性之一。 作用域JavaScript 中有两种作用域:...全局作用域,对于浏览器来说可以理解为 window 对象(Node.js

    Javascript变量作用域详解

    JS中变量的作用域分为全局变量和局部变量,函数内定义的称为局部变量,函数外的称为全局变量。(“函数外的称为全局变量”是相对的,另此处讨论的前提是用var显式声明的变量,函数内不用var定义的变量默认是全局变量...

    javascript中的作用域和闭包详解

    一、JavaScript作用域 JavaScript变量实际上只有两种作用域,全局变量和函数的内部变量。在函数内部任何一个地方定义的变量(var scope)其作用域都是整个函数体。 全局变量:指的是window对象下的对象属性。 作用域...

    javascript中的this作用域详解

    主要介绍了javascript中的this作用域详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics