小编LLJ*_*J97的帖子

Vue.js 方法声明之间的区别

我今天注意到的一件事让我很困惑。

当我第一次使用 Vue 时,有两种常见的方法来定义方法。

methods: {
    foo: () => {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

methods: {
    foo() {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

两者都没有任何问题。

今天我定义了一个像第一个例子一样的方法,我this在函数内部的作用域上遇到了问题。

对于上下文:

我有这样定义的数据:

data() {
    return {
        fooVar: ''
    }
}
Run Code Online (Sandbox Code Playgroud)

我的方法是这样定义的。

methods: {
    foo: () => {
        console.log('Foo: '+this.fooVar);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我检查控制台时,它说

Foo: undefined
Run Code Online (Sandbox Code Playgroud)

然后我将方法声明更改为

foo() {
    console.log('Foo: '+this.fooVar)
}
Run Code Online (Sandbox Code Playgroud)

它没有任何问题。

因此,由于我认为foo() {...}foo: () => {...}是同一件事(除了声明本身),我想知道函数的范围是否在这两种方式之间发生变化。

它会改变吗?如果是,为什么会改变?

javascript scope function vue.js

2
推荐指数
1
解决办法
821
查看次数

标签 统计

function ×1

javascript ×1

scope ×1

vue.js ×1