... Vì vậy, ES6¹ (mà xảy ra được tiêu chuẩn hóa trong một vài giờ trước) mang thông số mặc định cho các chức năng tương tự như trong PHP, Python vv Tôi có thể làm công cụ như:`This` hoạt động như thế nào trong các tham số mặc định?
function foo (bar = 'dum') {
return bar;
}
foo(1); // 1
foo(); // 'dum'
foo(undefined); // 'dum'
MDN nói rằng giá trị mặc định cho tham số được đánh giá tại thời gian gọi. Có nghĩa là mỗi khi tôi gọi hàm, biểu thức 'dum'
được đánh giá lại (trừ khi triển khai thực hiện một số tối ưu hóa lạ mà chúng tôi không quan tâm).
Câu hỏi của tôi là, cách this
chơi trò chơi này?
let x = {
foo (bar = this.foo) {
return bar;
}
}
let y = {
z: x.foo
}
x.foo() === y.z(); // what?
Các babel transpiler hiện evaluates² nó như false
, nhưng tôi không nhận được nó. Nếu họ đang thực sự đánh giá ở thời gian gọi, những gì về vấn đề này:
let x = 'x from global';
function bar (thing = x) {
return thing;
}
function foo() {
let x = 'x from foo';
return bar();
}
bar() === foo(); // what?
Các babel transpiler hiện evaluates³ nó như true
, nhưng tôi không nhận được nó. Tại sao bar
không lấy số x
từ foo
khi được gọi bên trong foo
?
1 - Có, tôi biết đó là ES2015.
2-Example A
3 - Example B
Có thông báo nào về việc Ban chấp nhận bản dự thảo ES6 cuối cùng không? –
@squint thông số kỹ thuật có tại http://www.ecma-international.org/ecma-262/6.0/index.html :) –
Rất tốt, cảm ơn! .. –