vue文件,在script标签下声明变量,是全局变量吗?

比如下图中a变量、b变量。什么场合下使用a变量,不需要驱动视图更新时使用a变量吗?

<script>
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'

let a = 2

export default {
  name: 'App',
  data () {
    return {
      b: 3,
      locale: zhCN
    }
  }
}
</script>
阅读 6.5k
4 个回答

一般只有常量const才会写在外面。
原因就是,如果你在多个地方引用了这个组件,这些地方的组件的a是共用的。
改变一个其他的也会变。
如果是常量const就没问题。

如果不想让一个变量进入data的响应式监听中,直接在created生命周期中挂载就可以。
data () {
return {}
},
created () {
this.a = 1
}

是全局变量吗?

不是,vue 文件走 vue-loader,然后走 webpack 的 module 处理,最终都会存在某个闭包环境里。

什么场合下使用a变量,不需要驱动视图更新时使用a变量吗?

是的。尤其在 vue2,响应式变量是会带来一定性能损耗的,所以不需要响应式就声明在 data() 外面是很合理的做法。

a和b在当前模块内都是全局变量,使用方法不同,a可以直接访问,b需要用this.b
数据不发生变化时使用a,其他情况使用b。

不是,是一个模块,一个模块有自己的模块作用域,a 变量只在当前模块生效;一般可以用来做静态变量。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题