var | let | const | |
---|---|---|---|
作用域范圍 | 函數 | 塊 | 塊 |
否覆蓋聲明 | true | err | err |
變量提升 | true | false | false |
再次賦值 | true | true | err |
javascript對象是引用傳遞,基本類型是按值傳遞
ps:javascript里沒有引用傳遞其實是傳遞引用?
function changeStuff(a, b, c)
{
a = a * 10;
b.item = "changed";
c = {item: "changed"};
}
var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};
changeStuff(num, obj1, obj2);
console.log(num);
console.log(obj1.item);
console.log(obj2.item);
console.log([1] === [1])//false
console.log([1] == [1])//false
- json 對象的拷貝函數
function copy(o) {
if (Object.prototype.toString.call(o) === '[object Array]') {
return o.map(item=>copy(item));
} else if (Object.prototype.toString.call(o) === '[object Object]') {
return Object.keys(o).reduce((result, key)=> {
result[key] = copy(o[key]);
return result;
}, {})
}
else {
return o;
}
}