那夜我还很年幼~
我不去想身后会不会袭来寒风冷雨 既然目标是地平线 留给世界的只能是背影

一、变量的作用域

Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。

var n=999;

  function f1(){
    alert(n);
  }

  f1(); // 999

另一方面,在函数外部自然无法读取函数内的局部变量。

function f1(){
    var n=999;
  }

  alert(n); // error

这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量

function f1(){
    n=999;
  }

  f1();

  alert(n); // 999

二、如何从外部读取局部变量?

闭包就是能够读取其他函数内部变量的函数。

由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。

四、闭包的用途

最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

function f1(){
  var n=999;
  nAdd=function(){n++;}  //不加var 相当于全局变量
  function f2(){
   alert(n); 
  }
  return f2;
  
 }
 var result = f1();  //这里的f1函数相当于f2函数
 result();
 nAdd();
 result();

 

冒号的用法

冒号一般有3种语法作用:(1)声明直接量对象的成员和声明标签

  (2)switch语句分支
  (3)?:三元表达式的false

举个例子:

对象表达法冒号在这里用来分割对象的属性和属性值
getValue = {
  a : "value1",
  b : "value2"
};
//调用;
alert(getValue.a);
//也可以这么写
alert(getValue["b"]);

如上,a和b是属于getValue对象的2个属性

2, 对象的方法,其实用法跟上面差不多

getValue = 
{
getFirst:function()
 {
  alert("value1");
 }
}
//调用
getValue.getFirst();

 

 

本文出处(http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

posted on 2012-07-19 10:39  那夜我还很年幼~  阅读(121)  评论(0)    收藏  举报