01/10/2018, 14:18
Closures trong javascript
Mọi người cho em hỏi tại sao thêm vào tham số lần thứ 2 nó lại thêm vào theLastName mà không phải thay đổi firstName nhỉ ?
function celebrityName (firstName) {
var nameIntro = "This celebrity is ";
function lastName (theLastName) {
return nameIntro + firstName + " " + theLastName;
}
return lastName;
}
var mjName = celebrityName ("Michael");
mjName ("Jackson");
Bài liên quan





Như thế nào mà gọi là “thêm vào tham số lần thứ 2” ?
thêm giá trị vào firstName lần 2(jackson) ý ạ
Cái “jackson” của bạn được truyền vào 1 function hoàn toàn khác, làm gì có chuyện thêm vào lần 2???
đây ạ, ý em là truyền vào
celebrityNamechuỗiMichaelrồi sau đó truyền tiếp chuỗiJacksonthì đáng nhẽ nó phải thay đổifirstNamenhưng nó lại đi vàotheLastNameạ nên anh có thể giải thích cho em được không ạ?function celebrityName, hành vi của nó là tạo ra 1 function mới là lastName (1 lần gọi là 1 lần tạo mới), lastName mang 1 closure, closure đó chứa 2 variable là nameIntro và firstName.
Rồi celebrityName return lại lastName, function đó (mới tạo) được gán vào mjName;
Bạn gọi mjName tức là bạn đang gọi 1 instance của lastName. Vậy tức là bạn gọi 2 function khác nhau. Dĩ nhiên gọi mjName(“Jackson”) thì “Jackson” đi vào theLastName (tham số của function lastName).
Để ý rằng trong javascript, function cũng là 1 object, có thể được gán, tạo, gọi, truy cập member.