全域變數的問題

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

張貼留言

這個網誌中的熱門文章

Unions 在C語言的簡單介紹

解釋scope.$apply用來做什麼? -- AngularJS

JavaScript的Timer用法