//變量是表示值的一個符號名字 //變量是經過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"