`
deng131
  • 浏览: 672242 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Javascript变量作用域问题

阅读更多

JavasScript中变量词法作用域:也叫做静态作用域,变量的作用域是在定义时决定而不是执行时决定。即词法作用域取决于源码,通过静态分析就能确定。

function f(){ 
 var t = 'a';
 return function fn(){
  alert(t)
  alert(this.t);
  var t = 123;
  alert(t);
  alert(this.t); //this == window对象
 };
}

f()()


fn = {
 a: 1,
 b: function(){
    console.info(a);
    console.info(this.a);
 },
 c: function(){
    var t = 1;
    var _this = this; 
    //var a = 1; //local scope (1)
    //a = 123;  //golble scope (2)
    return function(){
        console.info(t);     //闭包scope情况    
        //this == window对象,当(1)处放开时this.a返回undefined,(2)放开时返回123
        console.info(this.a) 
        console.info(_this.a)
    }
 }
};

fn.c()()

在执行Test()时,此时的上下文对象是window,即Javascript的全局对象,在执行new Test();时新建了一个Object,此时执行Test函数的上下文对象就是Object。
function Test() {
    console.log(this);
}
Test();    //window
new Test();//Object


参考:
http://www.jb51.net/article/25248.htm
http://mzhou.me/?p=81001#more-81001
1
2
分享到:
评论
2 楼 deng131 2010-12-01  
下次注意
1 楼 libmw 2010-12-01  
建议楼主以后写alert或者document的时候把运行结果写在后边,这样方便广大朋友们看到结果是否跟他们预期的一样也便于讨论,比如:
<script type="text/javascript">
function f(){
var t = 'a';
return function fn(){
  alert(t) //undefined
  alert(this.t); //this == window对象 所以结果为undefined
  var t = 123;
  alert(t); //123
  alert(this.t); //this == window对象 所以结果为undefined
};
}

f()()
</script>

相关推荐

    javascript变量作用域

    JavaScript 变量作用域详解 JavaScript 变量作用域是基于其特有的作用域链的。在 JavaScript 中,变量作用域是指变量可以被访问和修改的范围。 JavaScript 没有块级作用域,而是基于函数作用域和全局作用域的。 ...

    浅谈Javascript变量作用域问题

    JavaScript变量作用域问题 JavaScript作为一门动态脚本语言,在变量作用域上与其他语言存在显著差异。变量的作用域(Scope)指的是变量可以被访问的代码区域,它决定了哪些部分的代码可以访问该变量。理解变量作用...

    理解JavaScript变量作用域.pdf

    理解JavaScript变量作用域.pdf 本人还有几十本经典javascript书籍以及无数javascript资料,要的加我qq 568094881,本人网址:www.maoshanhai.com

    js变量作用域

    ### JavaScript 变量作用域详解 #### 一、引言 在探讨JavaScript的面向对象特性之前,理解变量作用域的概念至关重要。本篇文章旨在通过一系列示例和解释,帮助读者掌握JavaScript中的变量作用域机制。 #### 二、...

    基于JavaScript的变量作用域的辨析.pdf

    本文探讨了JavaScript中的变量作用域问题,通过对两种变量的特性从不同角度进行分析和测试,讨论了如何控制变量作用域的有效方法。 变量作用域是JavaScript编程过程中经常遇到的问题之一,对于编程人员来说是一个...

    理解JavaScript变量作用域更轻松

    本文不打算深入讲解JavaScript变量作用域问题(其实本人也没有能力能把这一话题讲的深入些),也不讲“闭包”话题,本文只讨论最实用的JavaScript作用域知识点。 一、JavaScript作用域分类 JavaScript就两种作用域:...

    深入理解变量作用域

    本文将从JavaScript权威指南出发,深入探讨变量作用域的相关知识点,包括全局作用域、局部作用域、以及闭包等高级概念。 #### 二、全局作用域与局部作用域 1. **全局作用域** - 定义:在JavaScript中,如果一个...

    JavaScript程序设计-变量作用域.pdf

    JavaScript是一种广泛用于网页和网络应用的编程语言,其核心特性之一就是变量作用域。变量作用域决定了变量在何处可以被访问以及何时会被销毁。本文将深入探讨JavaScript中的全局变量、局部变量、变量提升、词法作用...

    JavaScript程序设计变量作用域共4页.pdf.zi

    本文将深入探讨JavaScript中的变量作用域,以及它如何影响代码的运行和组织。 首先,我们来理解什么是变量作用域。在JavaScript中,变量作用域决定了变量在何处可以被访问和识别。主要有三种类型的作用域:全局作用...

    一道关于JavaScript变量作用域的面试题_.docx

    JavaScript变量作用域是编程语言中一个非常核心的概念,它决定了变量在何处可被访问以及其生命周期。在这道面试题中,我们看到的是如何在不同作用域下声明和使用变量,特别是与for循环相结合的情况。 首先,我们要...

    JavaScript 基础函数_深入剖析变量和作用域

    JavaScript是一种广泛用于网页开发的脚本语言,它的函数和作用域是实现代码逻辑结构和模块...理解JavaScript中的变量作用域非常重要,它有助于避免变量命名冲突和意外的变量修改,从而编写出更加健壮和易于维护的代码。

    JavaScript变量作用域及内存问题实例分析

    JavaScript变量作用域及内存问题是一个非常重要的概念,在编程过程中起着至关重要的作用。本文将对JavaScript变量作用域、内存问题以及相关的操作技巧进行深入的分析。 首先,我们需要了解变量作用域的相关知识。在...

    Javascript变量作用域详解

    ### Javascript变量作用域详解 Javascript变量作用域是编程中一个非常基础且重要的概念,理解它对于编写有效且可维护的代码至关重要。在Javascript中,变量的作用域主要分为两种:全局作用域和局部作用域。全局变量...

    深入理解JavaScript作用域和作用域链

    JavaScript作用域是编程中至关重要的概念,它规定了变量和函数的可见性及生命周期。JavaScript主要有两种作用域:全局作用域和局部作用域。 全局作用域是指在代码的任何位置都可以访问的变量或函数,这通常包括在最...

    javascript变量作用域使用中常见错误总结

    理解这些基本概念对于避免JavaScript中的变量作用域问题至关重要。在编写代码时,合理利用变量作用域可以提高代码的可维护性和性能,避免全局变量污染,减少潜在的错误。务必记住,良好的变量管理习惯能够使代码更...

    JavaScript变量的作用域全解析

    变量作用域是程序中定义这个变量的区域。 先来看一段示例: /* 代码1 */ var scope = "global "; function checkScope() { var scope = "local "; function childCheck() { var scope = "childLocal "; ...

    Javascript 变量作用域 两个可能会被忽略的小特性

    Javascript变量作用域是编程中非常基础且重要的一个概念,它决定了代码中变量的可访问性和生命周期。在Javascript中,变量作用域有两个可能会被忽略的小特性,即with语句和try-catch语句对变量作用域的影响,以及...

Global site tag (gtag.js) - Google Analytics