Var:作用域是依照所屬的函式位於的區塊內,且可以重複宣告。
for (var i = 0; i < 3; i++) {
};
console.log(i);
(function () {
for (var j = 0; j < 3; j++) {
};
}());
console.log(j);
var boy = 'TOM';
var boy = 'BOB';
console.log(boy);
let:作用域是依照所屬{}
區塊內,且不可以重複宣告。
for (let i = 0; i < 3; i++) {
console.log(i);
};
console.log(i);
(function () {
for (var j = 0; j < 3; j++) {
};
}());
console.log(j);
var boy = 'TOM';
var boy = 'BOB';
console.log(boy);
{
let boy = 'TOM';
console.log(boy);
};
let boy = 'BOB';
console.log(boy);
TDZ(暫時性死區):let一樣會有hoisting,但是在創造階段,無法呼叫變數;如果是var,則會出現該變數是undefined的值。
const:作用域是依照所屬{}
區塊內,且不可以重複宣告,或是重複賦值;如果內容(值)是個物件,那麼此物件的內容(物件的參數)是可以更改的。
var boy = 'TOM';
boy = 'BOB';
console.log(boy);
let boy = 'TOM';
boy = 'BOB';
console.log(boy);
const boy = 'TOM';
boy = 'BOB';
console.log(boy);
const family = {
father: 'TOM',
mothetr: 'Mar',
};
family.father = 'Park'
console.log(family.father);
family = {};