let 和 var
阿新 • • 發佈:2018-12-28
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