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 变量作用域详解 JavaScript 变量作用域是基于其特有的作用域链的。在 JavaScript 中,变量作用域是指变量可以被访问和修改的范围。 JavaScript 没有块级作用域,而是基于函数作用域和全局作用域的。 ...
JavaScript作用域是编程中至关重要的概念,它规定了变量和函数的可见性和生命周期。了解JavaScript作用域对于编写高效、安全的代码至关重要。本篇将详细解释JavaScript作用域的几个核心特性,包括无块级作用域、函数...
今天这篇文章对JavaScript作用域示例详解的介绍,希望能帮助大家更好的学习JavaScript。 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命...
### JavaScript 变量作用域详解 #### 一、引言 在探讨JavaScript的面向对象特性之前,理解变量作用域的概念至关重要。本篇文章旨在通过一系列示例和解释,帮助读者掌握JavaScript中的变量作用域机制。 #### 二、...
### JavaScript执行环境及作用域详解 #### 执行环境概述 执行环境定义了变量或函数能够访问的数据以及其他相关信息,它决定了这些变量和函数的行为方式。在JavaScript中,执行环境的概念至关重要,因为它不仅涉及...
1. 在JS中使用的是词法作用域(lexical scope) 不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量(global scope) 在函数内声明的变量具有函数作用域(function scope),属于局部变量 局部变量...
说起变量第一个要说到的肯定就是作用域,正是因为不熟悉JS的作用域,往往就会把面向对象的作用域张冠李戴,毕竟有些东西总是习惯性的这样,但是并不是每次照搬都是可以的,那么下一个问题就来了,js到底是什么作用...
JavaScript执行环境及作用域详解: JavaScript的执行环境和作用域是理解这门语言核心概念的关键部分,它影响着变量和函数的作用范围以及生命周期。执行环境定义了变量或者函数有权访问的其他数据,而作用域则决定了...
作用域的继承机制允许子作用域继承其父作用域的属性和方法,类似于JavaScript中的原型继承。这种继承机制有助于在控制器之间共享数据和行为。在AngularJS中,作用域的层次结构与HTML元素的层次结构大致相同,这样...
### Javascript变量作用域详解 Javascript变量作用域是编程中一个非常基础且重要的概念,理解它对于编写有效且可维护的代码至关重要。在Javascript中,变量的作用域主要分为两种:全局作用域和局部作用域。全局变量...
JavaScript 中有一个被称为作用域(Scope)的特性。虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,本文我会尽我所能用最简单的方式来解释作用域和作用域链,希望大家有所收获! 作用域(Scope) 1. 什么是...
JavaScript中没有块级作用域的概念,直到ES6之前,很多开发者使用立即执行函数表达式(IIFE)来模拟块级作用域,限制变量的作用范围。 闭包是JavaScript中的一个高级概念,它允许函数访问定义时的外部作用域。闭包...
一、JavaScript作用域 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种...
在JavaScript的AngularJS框架中,作用域(Scope)和数据绑定是两个核心概念,它们极大地简化了前端开发的复杂性,特别是对于构建大型单页面应用(SPA)来说。AngularJS由Google发起,作为一款轻量级的MVC框架,它...
JavaScript 函数作用域: 作用域在函数内修改。 JavaScript 局部作用域 变量在函数内声明,变量为局部作用域。 局部变量:只能在函数内部访问。 // 此处不能调用 carName 变量 function myFunction() { var carName...
JavaScript中的作用域链是理解JS变量访问规则的关键概念,它涉及到变量查找、作用域生命周期以及闭包等核心知识点。下面将详细阐述这些内容。 首先,JS中的全局变量和函数实际上是作为`window`对象的属性和方法创建...
本文将深入探讨JavaScript的静态作用域和动态作用域,并通过实例代码帮助理解这两种作用域的区别。 首先,我们来理解静态作用域。静态作用域,也称为词法作用域,是指在代码编写阶段就确定了函数或块级作用域的范围...