今天的學習

//變量是表示值的一個符號名字
//變量是經過var關鍵字聲明的
var x; //聲明一個變量x

//值能夠經過等號賦值給變量
x = 1; //如今變量x的值爲1

console.log(x); //=> 1:經過變量獲取其值

//JavaScript支持多種數據類型
x = 1;          //數字型
x = 0.01;       //浮點型
x = "xxx";      //由雙引號內的文本構成的字符串
x = 'xxx';      //由單引號內的文本構成的字符串
x = true;       //布爾值
x = false;      //另外一個布爾值
x = null;       //null是一個特殊的值,意思是"空"
x = undefined;  //undefined和null很是相似,意思是"未定義"
//JavaScript中最重要的類型就是對象
//對象是名/值對的集合,或字符串到值映射的集合
var book = {            //對象是由花括號括起來的
    top: "JavaScript",  //屬性'top'的值是'JavaScript'
    fat: true           //屬性'fat'的值是true
};                      //右花括號標記了對象的結束

//經過"."或"[]"來訪問對象屬性
book.top                //=>"JavaScript"
book["fat"]             //=>true:另一個獲取屬性的方法
book.author = "Flanagen"//經過賦值建立一個新屬性
book.contents = {};     //{}是一個空對象,它沒有屬性
//JavaScript一樣支持數組(以數字爲索引的列表)
var primes = [2,3,5,7];        //擁有四個值的數組,由"["和"]"劃定邊界

primes[0];                     //=>2: 數組中的第一個元素
primes.length                  //=>4: 數組中的元素個數
primes[primes.length - 1];     //=>7: 數組的最後一個元素
primes[4] = 9;                 //經過賦值來添加新元素
primes[4] = 11;                //或經過賦值來改變已有的元素
var empty = [];                //[]是空數組,它具備0個元素
empty.length                   //=> 0
//數組和對象中均可以包含另外一個數組或對象
var points = [                  //具備兩個元素的數組
    {x: 0, y: 0},               //每一個元素都是一個對象
    {x: 1, y: 1}
];

var data = {                    //一個包含兩個屬性的對象
    trial1: [[1, 2],[3,4]],     //每個屬性都是數組
    trial2: [[2, 3],[4,5]]      //數組的元素也都是數組
};
var a;

function b(){
    var a = 1;
}

b();

console.log(a);

//輸出undefined
var a;

function b(){
    a = 1;
}

b();

console.log(a);

//輸出1

做用域與兩種,一種是全局做用域,一種是局部做用域javascript

在函數體外部聲明的變量是全局做用域,在函數體內部也可使用java

在函數體內部聲明的變量是局部做用域,在函數體外部不能使用數組

聲明不等於賦值,在函數體外部聲明的變量,在函數體內部賦值,在函數體外部能夠隨時調用函數

在函數體內部,局部變量的優先級高於同名的全局變量。code

若是在函數體內部聲明的一個局部變量和全局變量重名,那麼全局變量就會被局部變量覆蓋。對象

var scope = "global";         //聲明一個全局變量
function person(){
    var scope = "local";      //聲明一個同名的局部變量
    return scope;             //返回局部變量的值,而不是全局變量的值
}
person();                     //=>"local"

在全局做用域編寫代碼時能夠不寫var語句,但聲明局部變量時則必須使用var語句。索引

scope = "global";               //聲明一個全局變量,不用var語句來聲明
function person(){
    scope = "local";            //這就是修改了全局變量
    myscope = "123";            //這裏是顯式的聲明瞭一個全局變量
    return [scope,myscope];     //返回兩個值
}

person();                       //["local", "123"]: 產生了反作用

scope                           //=>"local":全局變量修改了

函數定義是能夠嵌套的。因爲每一個函數都有它本身的做用域,所以會出現幾個局部做用域嵌套的狀況。ip

var scope = "global scope";           //全局變量
function person(){
    var scope = "local scope";        //局部變量
    function nested(){
        var scope = "nested scope";   //嵌套做用域內的局部變量
        return scope;                 //返回當前做用域內的值
    }
    return nested();
}

person();                             //=>嵌套做用域

//輸出"nested scope"
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息