1. 程式人生 > >let 和 var

let 和 var

var即可用於函式外,亦可用於函式內,這就涉及到全域性變數與區域性變數的問題,
全域性變數如何宣告:
在函式外宣告的變數就是全域性變數,反之,在函式內宣告的變數就是區域性變數,
作用域:
全域性變數無論在函式內,還是函式外,都可訪問到;
區域性變數只能在函式內有效,函式外部訪問不到該變數及說對應的變數值
var宣告的變數在兩種情況下,是全變數:
1.直接在函式外部宣告:var aa=1;
2.在函式內部不宣告關鍵字 aa=2,即博主change()方法裡的變數重新賦值

測試:
提供的函式change()方法裡再太新增 var bb=33;
在該函式外面,console.log(bb);會得到undefined 

 

let 沒有變數提升

var a = 10; // 掛在window
(function aaa(){ // 不掛在window下
	console.log(a); // undefined
	a = 5;
	console.log(a); // 5
	console.log(window.a); // 10
	var a = 20;
	console.log(a); // 20
})();


var a = 10;
function aa(){ // 掛在window下的匿名函式
	console.log(a); // undefined
	a = 5;
	console.log(a); // 5
	console.log(window.a); // 10
	var a = 20;
	console.log(a); // 20
}

aa();
let a = 10;
(function aa(){
	console.log(a);
	a = 5;
	console.log(a);
	console.log(window.a);
	let a = 20;
	console.log(a);
})()


// Uncaught SyntaxError: Identifier 'a' has already been declared
    at <anonymous>:1:1