1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<code><html></code>
<code> </code><code><head></code>
<code> </code><code><title></title></code>
<code> </code><code><script></code>
<code> </code><code>function</code>
<code>ArrayList(array) {</code>
<code> </code><code>this</code><code>._arr =</code><code>typeof</code><code>(array) =</code><code>"string"</code>
<code>? array.split(</code><code>","</code><code>) : array;</code>
<code> </code><code>}</code>
<code> </code><code>//定義一個$each函數,這個函數接受一個閉包作為參數</code>
<code> </code><code>ArrayList.prototype.$each =</code><code>function</code><code>(closure) {</code>
<code> </code><code>var</code>
<code>ret = [];</code>
<code> </code><code>for</code><code>(</code><code>var</code>
<code>i = 0; i <</code><code>this</code><code>._arr.length; i++) {</code>
<code> </code><code>ret.push(closure.call(</code><code>this</code><code>,</code><code>this</code><code>._arr[i]));</code>
<code> </code><code>}</code>
<code> </code><code>return</code>
<code>ret;</code>
<code> </code><code>ArrayList.prototype.add =</code><code>function</code><code>(num) {</code>
<code>this</code><code>.$each(</code><code>function</code><code>(a) {</code><code>return</code>
<code>parseFloat(a) + parseFloat(num)});</code>
<code> </code><code>ArrayList.prototype.multiply =</code><code>function</code><code>(factor) {</code>
<code>parseFloat(a) * parseFloat(factor)});</code>
<code> </code><code></script></code>
<code> </code><code></head></code>
<code> </code><code><body></code>
<code> </code><code><input id =</code><code>"list"</code>
<code>type =</code><code>"text"</code>
<code>value =</code><code>"1,2,3,4"</code>
<code>/></code>
<code> </code><code><input id =</code><code>"num"</code>
<code>value =</code><code>"2"</code>
<code> </code><code><input type =</code><code>"button"</code>
<code>value =</code><code>"Add"</code>
<code>onClick =</code><code>"result.value = (new ArrayList(list.value)).add(num.value)"</code>
<code>value =</code><code>"Multiply"</code>
<code>onClick =</code><code>"result.value = (new ArrayList(list.value)).multiply(num.value)"</code>
<code> </code><code><br /><input type =</code><code>"text"</code>
<code>id =</code><code>"result"</code>
<code> </code><code></body></code>
<code></html></code>
JS異常
<code>try</code>
<code>{</code>
<code> </code><code>var</code>
<code>n = prompt(</code><code>"Please enter a positive number"</code><code>);</code>
<code>f = factorial(n);</code>
<code> </code><code>alert(n +</code><code>"! = "</code>
<code>+ f);</code>
<code>}</code><code>catch</code><code>(ex) {</code>
<code> </code><code>if</code><code>(ex</code><code>instanceof</code>
<code>NonePositiveError) {</code>
<code> </code><code>aoert(ex.message);</code>
<code> </code><code>}</code><code>else</code>
<code> </code><code>throw</code><code>(ex);</code>
<code> </code><code>}</code>
<code>} finally {</code>
<code> </code>
<code>}</code>
<code>function</code>
<code>NonePositiveError(n) {</code>
<code> </code><code>n = n ||</code><code>""</code><code>;</code>
<code> </code><code>this</code><code>.message =</code><code>""</code><code>;</code>
<code>NonePositiveError.prototype =</code><code>new</code>
<code>Error();</code>
<code>factorial(n) {</code>
<code> </code><code>n = parseInt(n);</code>
<code> </code><code>if</code><code>(isNaN(n)) {</code>
<code> </code><code>throw</code><code>(</code><code>new</code>
<code>TypeError());</code>
<code>if</code><code>(n <= 0) {</code>
<code>NonePositiveError(n));</code>
<code> </code><code>return</code>
<code>n <= 1 ? 1 : n * factorial(n - 1);</code>