一個閉包函式的簡單例子

lq305發表於2011-07-13

 函式體中定義並返回另一個函式,這個巢狀定義在函式體內的函式被稱為“閉包”下面一個典型的例子可以大致瞭解閉包的用法。
<html>
<head>
 <title>Example-5.5函式和閉包</title>
</head>
<body>
<script>
<!--
 /*JavaScript允許在函式體中定義並返回另一個函式,
這個巢狀定義在函式體內的函式被稱為“閉包”
 由於JavaScript擁有閉包,因此它具有明顯的functional(函式式)的特徵*/
 function parabola(a, b, c) //構造拋物線方程
 {
  var ret = function(x)
  {
   return a * x * x + b * x + c;
  }
  ret.toString = function()
  {
   return a + "x^2+" + b + "x+" + c;
  }
  return ret;
 }
 var p1 = parabola(2,3,4);
 //p1是一條拋物線y = 2*x*x + 3*x + c,p1(15)求出這一條拋物線在x=15處的值
 document.write(p1+ " ->" +p1(15) + "<br/>");
 var p2 = parabola(2,-3,14);
 document.write(p2+ " ->" +p2(15));

//兩個輸出的結果是一樣的
 alert(parabola(2,3,4)(15));
 alert(p1(15));
-->
</script>
</body>
</html>

心得:是一個函式內定義的函式,可以通過引數識別來訪問內部的函式。

兩個彈出視窗的的輸出結果是一樣的,這裡可以看出閉包的用法。

相關文章