javascript -- 變量

工做中發覺原生 js 還有待增強,只好再啃一遍高程3了。
 
ECMAScript的變量是鬆散類型的,所謂鬆散類型就是(變量)能夠用來保存任意類型的數據。換句話說每一個變量僅僅是在特定的時間內保存值的佔位符而已。
所謂特定的時間就是變量的生命週期。
關於生命週期就要說到‘做用域’,進而得說‘做用域鏈’。此處只作簡單介紹,後面會詳細介紹做用域和做用域鏈。
js中沒有塊狀做用域( if語句 ),只有全局做用域和函數做用域。
 
(var定義的變量將稱爲該做用域中的局部變量 即全局下就是全局變量,函數內就是局部變量)
 
全局做用域:在全局下有效(全局定義或函數內未定義只賦值的變量),即window下均可以使用。
函數做用域:只在函數體內有效,函數運行完函數、變量當即銷燬,這也是沒法在外面引用函數內的變量的緣由。
定義:
 
var message;
var user;
 或者
 
  
 var message,
  user;
 

 

 
定義了名爲message user的變量,能夠用來保存任何值。未初始化的會保存一個undefined
console.log(message);// undefined

函數退出後,變量銷燬.函數

function test(){
var msg='hi'; // 局部變量
}
test();
console.log(msg);// 錯誤

函數體內未定義只賦值的變量是全局變量:spa

function test(){
 msg='hi';// 全局變量 不太推薦 由於在局部定義全局變量 難以維護
}
test();
console.log(msg);// 'hi'

變量提高(只是聲明提高,賦值(初始化)沒有提高):code

function test(){
console.log(msg);
var msg='hi';
};
test();// undefined
console.log(msg);// msg is not defined
由此能夠看出變量 msg 提高到了函數test()的頂部,初始化並無提高,以下:
function test(){
var msg; console.log(msg); msg='hi'; };
相關文章
相關標籤/搜索