iT邦幫忙

DAY 6
3

網頁開發五四三系列 第 7

function , script block in JavaScript (函式,腳本區) 4

繼續介紹關於 JavaScript 中的 腳本區 script block....
在前幾篇文章,陸續說明 JavaScript function、variable 的 script block

本篇算是進入這個系列主題的重點,直接看程式碼與說明,如下:

function f1()
{
	alert('outside');
}

console.log('test 1 - ' + f1);

;(function(){

  console.log('test 2 - ' + f1);

  f1 = function()
  {
    alert('b_var');
  }

  console.log('test 3 - ' + f1);

  function f1()
  {
    alert('inside');
  }

  console.log('test 4 - ' + f1);

})();

console.log('test 5 - ' + f1);

test 1 - 結果是 outside -> 無疑

test 2 - 此 f1 感覺會讀取 window.f1 , 但是在 line 19~22 有宣告一個function f1
因此 line 10 的 f1 會優先讀取 巢狀內的 f1 (巢狀內沒有f1才會很上層提取) , 因此目前 f1 為 inside

test 3 - 在 line 12~15 有對 f1 進行修改,所以,此處的 f1 為 b_var

test 4 - 雖然在 line 19~22 有一個 function f1 , 但是在 line 24 的 f1 並不影響
因為 line 19~22 是在 巢狀一開始(line 8)就被宣告

test 5 - 因為 巢狀內都是使用內部的 f1 , 並無影響外部的.f1 , 因此結果還是 outside

var f1 = function(){}
與
function f1(){}

除了在 parse-time 與 run-time 的不同

在 script block 的宣告時間點也是有所差異。


上一篇
function , script block in JavaScript (函式,腳本區) 3
下一篇
PHP 函式呼叫也有匿名?
系列文
網頁開發五四三12

1 則留言

我要留言

立即登入留言