Kết quả đoạn code sau là gì? Hãy giải thích tại sao?
Kết quả đoạn code sau là gì? Hãy giải thích tại sao?
function getInfo(member, year) {
member.name = "Lydia";
year = "1998";
}
const person = { name: "Sarah" };
const birthYear = "1997";
getInfo(person, birthYear);
console.log(person, birthYear);
{ name: "Lydia" }, "1997"
{ name: "Sarah" }, "1998"
{ name: "Lydia" }, "1998"
{ name: "Sarah" }, "1997"
Đối số
sẽ được đưa vào hàm dạng tham trị, trừ phi nó là object, khi đó nó sẽ được đưa vào hàm dạng tham chiếu. birthYear
là dạng giá trị, vì nó là string chứ không phải object. Khi chúng ta đưa vào dạng giá trị, một bản sao của giá trị đó sẽ được tạo ra (xem thêm câu 46).
birthYear
trỏ đến giá trị là "1997"
. Đối số year
cũng sẽ rỏ đến giá trị "1997"
, nhưng giá trị này chỉ là một bản sao của giá trị mà birthYear
trỏ tới mà thôi, hai giá trị đó hoàn toàn khác nhau. Do đó khi ta thay đổi giá trị year
bằng "1998"
, chúng ta chỉ thay đổi giá trị của year
mà thôi. birthYear
sẽ vẫn giữ giá trị là "1997"
.
person
là một object. Biến member
có một tham chiếu tới cùng object mà person
trỏ tới. Khi chúng ta thay đổi một thuộc tính của object mà member
trỏ tới, giá trị của person
cũng sẽ tự động thay đổi theo, vì chúng có chung tham chiếu. name
của person
khi này sẽ có giá trị mới là "Lydia"
.
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào