全域變數的問題
References :
1. https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/globals.html
2. http://www.diveintojavascript.com/core-javascript-reference/the-nan-property
這篇文章並不會一開始寫太多,因為我雖然寫了JavaScript也有一段時間,但卻沒有真正
去研究JavaScript,所以我想說把遇到的問題跟看到的文章去做個整理,再慢慢的寫在Blog,
一方面可以當作是紀錄,另一方面就分享給需要的人。
首先我是參考Ref. 1文章來研究區域跟全域變數在寫JavaScript需要注意的部份
例如 :
code 1:
========================
result = 5;
function xv(a,b){
var result = result+a+b;
return result;
}
console.log(xv(1,2));
code 2:
==============================
result = 5;
function xv(a,b){
result = result+a+b;
return result;
}
console.log(xv(1,2));
code 1跟 code2有什麼不同呢?你可以用http://jsfiddle.net/這個網站去執行看看。
這兩個寫法不同在於code 2 的xv函數中的result是全域變數而code 1是區域變數,當
你去執行這code就會看見:
code 1 :
NaN
code 2 :
8
這是滿有趣的問題當你沒有在xv函數中用var去宣告result是區域變數的話,他會被視為
全域變數,所以當你函數外已經有定義相同名字的變數他將會被拿來做計算。反之如果有
用var定義result的變數,在一開始要做計算的時候result的內容將是undefined拿來跟a和b
來做數值運算得到的結果是NaN。
至於NaN是Not-a-Number value。如果需要更加瞭解的話可以參考Ref. 2
1. https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/globals.html
2. http://www.diveintojavascript.com/core-javascript-reference/the-nan-property
這篇文章並不會一開始寫太多,因為我雖然寫了JavaScript也有一段時間,但卻沒有真正
去研究JavaScript,所以我想說把遇到的問題跟看到的文章去做個整理,再慢慢的寫在Blog,
一方面可以當作是紀錄,另一方面就分享給需要的人。
首先我是參考Ref. 1文章來研究區域跟全域變數在寫JavaScript需要注意的部份
例如 :
code 1:
========================
result = 5;
function xv(a,b){
var result = result+a+b;
return result;
}
console.log(xv(1,2));
code 2:
==============================
result = 5;
function xv(a,b){
result = result+a+b;
return result;
}
console.log(xv(1,2));
code 1跟 code2有什麼不同呢?你可以用http://jsfiddle.net/這個網站去執行看看。
這兩個寫法不同在於code 2 的xv函數中的result是全域變數而code 1是區域變數,當
你去執行這code就會看見:
code 1 :
NaN
code 2 :
8
這是滿有趣的問題當你沒有在xv函數中用var去宣告result是區域變數的話,他會被視為
全域變數,所以當你函數外已經有定義相同名字的變數他將會被拿來做計算。反之如果有
用var定義result的變數,在一開始要做計算的時候result的內容將是undefined拿來跟a和b
來做數值運算得到的結果是NaN。
至於NaN是Not-a-Number value。如果需要更加瞭解的話可以參考Ref. 2
留言