箭头功能是否可以通过设计重新定义现有的功能行为?使用jQuery的get(是的,我知道) - 根据是否使用了箭头函数,我得到了两个不同的内部成功值。谁能解释为什么会这样?
var get = (e) => {
return new window.Promise((resolve, reject) => {
$.ajax({
context: {test: 1}, // this
type: "GET",
url: "...",
complete: function () {
// this is only correct when using old syntax, arrow
// function would redefine the value of this to the function's parent
},
complete: ()=>{ } // Is not working, this is not what I'd expect.
});
});
答案 0 :(得分:1)
箭头函数主要引入以更改this
的范围,这有助于避免始终使用.bind(this)
。你获得不同的价值是很自然的
箭头函数表达式的语法短于函数表达式,不绑定自己的,arguments,super或new.target。
更清晰,更简洁的语法具有次要价值。它们肯定不是function
现在这已经超出了等式 - 你的示例中还有2个oncomplete
回调。