<html>
<head>
<script>
function f(){
a = 1; //全局变量a赋值为1
var b = 2; 局部变量b赋值为2
}
try{
alert(a);
}
catch(e){
alert(e.message); //变量a未定义
}
f(); //调用函数
alert(a); //1
</script>
</head>
</html>
变量的赋值操作发生在javascript执行期,而不是预编译期,在函数未调用前,函数内部定义的全局变量是无效的。
<html>
<head>
<script>
var a = 1; //声明并初始化全局变量
(function f(){
alert(a); //undefined
var a = 2; //声明并初始化局部变量
alert(a); //2
})();
</script>
</head>
</html>
由于函数内部声明了一个同名局部变量a,所以在预编译期,javascript就是用该变量覆盖掉拳击变量对于函数内部的影响,而在执行初期,局部变量a未赋值,所以在第一行读取局部变量a的值也就是undefined了。
<html>
<head>
<script>
var a = 1;
var b = 2;
function f(){
var a = 3;
function f(){
alert(a); //读取变量a的值,返回3
var b; //声明局部变量b
alert(b); //读取局部变量b的值,undefined
}
return f;
}
var c = f();
c();
</script>
</head>
</html>
在闭包函数中,变量的作用域并没有因为使用闭包而发生改变,同时函数与闭包之间的作用域链也没有因为闭包而破坏,
<html>
<head>
<script>
var a = 1;
(function(){
var b = 2;
(function(){
var c = 3;
(function (){
var d = 4;
alert(a+b+c+d); //10
})()
})()
})()
</script>
</head>
</html>
javascript 解释器首先在最内层调用对象中查询属性a,b,c,d,其中只发现了属性d,并获取它的值,然后沿着作用域链,在上一层调用对象中继续查询查找属性a,b,c,以此类推。
分享到:
相关推荐
理解JavaScript变量作用域.pdf 本人还有几十本经典javascript书籍以及无数javascript资料,要的加我qq 568094881,本人网址:www.maoshanhai.com
JavaScript变量作用域是编程语言中一个非常核心的概念,它决定了变量在何处可被访问以及其生命周期。在这道面试题中,我们看到的是如何在不同作用域下声明和使用变量,特别是与for循环相结合的情况。 首先,我们要...
### JavaScript 变量作用域详解 #### 一、引言 在探讨JavaScript的面向对象特性之前,理解变量作用域的概念至关重要。本篇文章旨在通过一系列示例和解释,帮助读者掌握JavaScript中的变量作用域机制。 #### 二、...
JavaScript变量作用域是编程基础中的重要概念,它决定了变量在哪些范围内可以被访问。了解变量作用域可以帮助开发者更好地管理代码中的数据,防止意外的变量冲突,从而提高代码的稳定性和可维护性。 JavaScript中...
### Javascript变量作用域详解 Javascript变量作用域是编程中一个非常基础且重要的概念,理解它对于编写有效且可维护的代码至关重要。在Javascript中,变量的作用域主要分为两种:全局作用域和局部作用域。全局变量...
JavaScript变量作用域问题 JavaScript作为一门动态脚本语言,在变量作用域上与其他语言存在显著差异。变量的作用域(Scope)指的是变量可以被访问的代码区域,它决定了哪些部分的代码可以访问该变量。理解变量作用...
JavaScript变量作用域及内存问题是一个非常重要的概念,在编程过程中起着至关重要的作用。本文将对JavaScript变量作用域、内存问题以及相关的操作技巧进行深入的分析。 首先,我们需要了解变量作用域的相关知识。在...
Javascript变量作用域是编程中非常基础且重要的一个概念,它决定了代码中变量的可访问性和生命周期。在Javascript中,变量作用域有两个可能会被忽略的小特性,即with语句和try-catch语句对变量作用域的影响,以及...
解题前先回顾JavaScript变量作用域的知识。变量i和j都是使用var声明的,所以它们都是函数作用域,即它们在全局作用域内都可以被访问。接下来,执行循环体时,每一次循环都会执行以下步骤: 1. 先将arr[i]的值赋给...
### 不同浏览器JavaScript变量作用域的处理方法 #### 一、引言 JavaScript是一种广泛使用的脚本语言,它被设计用于网页开发,并逐渐扩展到服务器端编程和其他领域。JavaScript的作用域规则是理解其行为的关键之一,...
在深入理解JavaScript变量作用域的概念之前,首先我们需要了解JavaScript中变量是如何声明的。在JavaScript中,可以使用`var`关键字来声明变量,这些变量会受到作用域规则的影响。变量的作用域决定了在何处可以访问...
JavaScript 变量作用域是编程中的关键概念,它决定了变量在何处可以被访问以及它们的生命周期。在这篇文章中,我们将深入探讨JavaScript中的全局作用域、局部作用域、以及一些特殊情况,如函数内部变量的声明和对象...
基于JavaScript的变量作用域的辨析 本文探讨了JavaScript中的变量作用域问题,通过对两种变量的特性从不同角度进行分析和测试,讨论了如何控制变量作用域的有效方法。 变量作用域是JavaScript编程过程中经常遇到的...
本文将从JavaScript权威指南出发,深入探讨变量作用域的相关知识点,包括全局作用域、局部作用域、以及闭包等高级概念。 #### 二、全局作用域与局部作用域 1. **全局作用域** - 定义:在JavaScript中,如果一个...
JavaScript中的变量作用域是编程中一个至关重要的概念,它决定了变量在何处可被访问和其生命周期。作用域的划分在JavaScript中主要基于函数,而不是像其他一些语言那样基于块(例如,C++或Java的{}结构)。理解这...
JavaScript中的变量作用域是编程时一个至关重要的概念,它决定了变量在何处可被访问以及何时可被访问。这里,我们来深入探讨一下标题和描述中提及的常见错误和理解难点。 1. **全局变量与局部变量** - 全局变量在...