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
相关推荐
javascript执行环境及作用域详解_.docx
JavaScript作用域示例详解_.docx
今天这篇文章对JavaScript作用域示例详解的介绍,希望能帮助大家更好的学习JavaScript。 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命...
JS难点同步异步和作用域与闭包及原型和原型链详解 目录 JS三座大山同步异步同步异步区别作用域、闭包函数作用域链块作用域闭包闭包解决用var导致下标错误的问题投票机闭包两个面试题原型、原型链原型对象原型链...
1. 在JS中使用的是词法作用域(lexical scope) 不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量(global scope) 在函数内声明的变量具有函数作用域(function scope),属于局部变量 局部变量...
说起变量第一个要说到的肯定就是作用域,正是因为不熟悉JS的作用域,往往就会把面向对象的作用域张冠李戴,毕竟有些东西总是习惯性的这样,但是并不是每次照搬都是可以的,那么下一个问题就来了,js到底是什么作用...
JavaScript 中有一个被称为作用域(Scope)的特性。虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,本文我会尽我所能用最简单的方式来解释作用域和作用域链,希望大家有所收获! 作用域(Scope) 1. 什么是...
一、JavaScript作用域 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种...
主要为大家详细介绍了javascript执行环境及作用域,分别针对javascript执行环境及作用域进行探讨,感兴趣的小伙伴们可以参考一下
JavaScript 函数作用域: 作用域在函数内修改。 JavaScript 局部作用域 变量在函数内声明,变量为局部作用域。 局部变量:只能在函数内部访问。 // 此处不能调用 carName 变量 function myFunction() { var carName...
本文实例为大家分享了JS作用域链的相关内容,供大家参考,具体内容如下 1、所有全局变量和函数都是作为window对象的属性和方法创建的。 2、在某个方法函数的作用域中,所有代码执行完之后,该作用域被销毁,保存在...
本文实例讲述了JavaScript作用域链。分享给大家供大家参考,具体如下: 跟其他语言一样,变量和函数的作用域揭示了这些变量和函数的搜索路径。对于JavaScript而言,理解作用域更加重要,因为在JavaScript中,作用域...
作用域的嵌套将形成作用域链,函数的嵌套将形成闭包。闭包与作用域链是 JavaScript 区别于其它语言的重要特性之一。 作用域JavaScript 中有两种作用域:...全局作用域,对于浏览器来说可以理解为 window 对象(Node.js
JS中变量的作用域分为全局变量和局部变量,函数内定义的称为局部变量,函数外的称为全局变量。(“函数外的称为全局变量”是相对的,另此处讨论的前提是用var显式声明的变量,函数内不用var定义的变量默认是全局变量...
一、JavaScript作用域 JavaScript变量实际上只有两种作用域,全局变量和函数的内部变量。在函数内部任何一个地方定义的变量(var scope)其作用域都是整个函数体。 全局变量:指的是window对象下的对象属性。 作用域...
主要介绍了javascript中的this作用域详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下