js variable scope

太慚愧了...
今天發現一件驚人的事實

var x = 4;
if(x < 5){
    var i = 3;
}

以前我會以為 i 出了if 的statement var i 就undefined 了
(就以前學C++ 的認知來看)
今天才發現不然, i 是global 變數!
不信可以拿到Chrome 的js console 執行

=========================================
那怎麼樣才會有"變數封裝"的效果呢?
答案是透過function (函式)


範例:

function ha(){
    var iii = 3;
}

一樣可以試試, 你會發現 iii 出了function 的範圍就undefined 了

=========================================

藉著這個主題複習一下匿名函式


(function(x){
    var iiiii= x;
})(1)

之前的文章 有提到, 這種函式寫法不只是定義, 他同時還會執行
當然, 同一般函式, 變數iiiii 出了外面就沒有定義了

留言

熱門文章