Javascript ES6语法与声明方法的区别
我还不太熟悉所有ES6语法,我开始学习Vue.js,它广泛使用了它。所以,我发现了一些让我有点困惑的事情: 这两种方法有什么区别Javascript ES6语法与声明方法的区别,javascript,vue.js,ecmascript-6,Javascript,Vue.js,Ecmascript 6,我还不太熟悉所有ES6语法,我开始学习Vue.js,它广泛使用了它。所以,我发现了一些让我有点困惑的事情: 这两种方法有什么区别 const actions = { foo1(num) { console.log(num); }, foo2: (num) => { console.log(num); } } actions.foo1(2); actions.foo2(3); // output: 2 // output: 3 我猜它们不一样,尽管它
const actions = {
foo1(num) {
console.log(num);
},
foo2: (num) => {
console.log(num);
}
}
actions.foo1(2);
actions.foo2(3);
// output: 2
// output: 3
我猜它们不一样,尽管它们都输出传递的值。第一个是现有的函数定义,而第二个是声明arrow函数(使用ES6 fat arrow语法)。它们在保留
this
的值方面是不同的。箭头函数无法访问对象元素,但在这种情况下,您不是指this
,这就是为什么您的输出是相同的。一个很好的例子是在setTimeOut
中递增一个全局变量。如果您使用箭头函数,它不会创建自己的作用域,而是从调用它的地方引用这个。@trincot谢谢。编辑最有可能给您带来问题的差异: