Gán một giá trị mặc định sử dụng một biến có cùng tên ném một lỗi tham khảo:Giá trị đối số mặc định JS từ biến: tại sao số nhận dạng phải khác?
var a = 'adef';
var x = (a=a) => console.log(a);
x();
=> "ReferenceError: a is not defined"
Nhưng điều này là tốt:
var other = 'otherdef';
var x = (a=other) => console.log(a);
x();
=> "otherdef"
giả định của tôi là giá trị của a
trong phạm vi bên ngoài sẽ được gán cho phạm vi mới.
Tôi đã cố gắng sử dụng const
thay vì var
, và class
/function
thay vì một mũi tên chức năng, nhưng kết quả luôn luôn là như nhau (thử nghiệm trong chrome 63 và nút 6).
Tôi có một cảm giác vấn đề là a
là 'treo' trong phân và do đó việc chuyển nhượng là đề cập đến sự mới 'a' (mà tồn tại nhưng là undefined) ...
Có, 'a' thực sự là [hoisted] (https://stackoverflow.com/q/31219420/1048572) trong [tham số phạm vi] (https://stackoverflow.com/q/44896829/1048572) – Bergi