Tời kéo mô tả một tính năng về cách Javascript được trình duyệt diễn giải và không quá nhiều tính năng được sử dụng.
Khi diễn giải Javascript, trình duyệt phạm vi biến cấp độ chức năng ở đầu hàm. Thí dụ:
function AddTwoAndTwo() {
var two = 2;
var result = two + two;
return result;
}
Trong mã được đăng, cả hai biến "hai" và "kết quả" đều tồn tại ở đầu phạm vi hàm (rõ ràng, như chúng được khai báo ở đó.) Tuy nhiên, vì các trình duyệt đang "nâng" các biến, nên sau đây trở thành mã Javascript hợp pháp .
function AddTwoAndTwo() {
result = 5;
alert(result);
var two = 2;
var result = two + two;
return result;
}
Hiệu ứng ròng ở đây là bạn có các biến được sử dụng trước khi bạn khai báo chúng và điều đó có thể gây nhầm lẫn, đặc biệt là với các biến phạm vi toàn cầu. Thí dụ:
var result = 6;
function AddTwoAndTwo() {
alert(result); // should this be 6 or undefined?
var two = 2;
var result = two + two;
return result;
}
Để tránh nhầm lẫn, hãy khai báo các biến của bạn ở đầu hàm.