JavaScript作用域:Scope

前言:什么是Scope?

Scope其实就是,代码在运行时,代码中的变量或者函数的可访问性;

Scope决定了变量或者函数,在哪些地方可以被访问,哪些地方不可以访问;

一、全局作用域

在任何地方都可以被访问的变量,就拥有全局作用域,这个变量也被称为“全局变量”

// 全局变量
const name = "zs";
export default {
  created() {
    console.log('created', name);
  },
  mounted() {
    console.log('mounted', name);
  },
};
结果

name变量是全局变量,可以再任何地方被访问

二、局部作用域

局部作用域,是只能在某些特定的代码片段内被访问,例如函数内部;

export default {
  created() {
    // 局部变量
    let name = "zs"
    console.log('created', name);
  },
  mounted() {
    // 不可以访问name变量
    console.log('mounted', name);
  },
};
结果

created方法中声明的变量name是局部变量,只能在created方法中访问,不能在其他方法内访问(例如mounted)

三、块级作用域

块级作用域,只有在块{}的内部才可以被访问;

export default {
  mounted() {
    let result = true;
    if (result) {
      // 块级作用域
      let name = "zs"
      console.log(name);
    }
    console.log('create', name);
  },
};
结果

name变量在块级作用域内,所以只能在if内部被访问,不能被块外部访问;

只有let、const声明的变量才有会计作用域,而var声明的变量是没有块级作用域的

你可能感兴趣的:(JavaScript作用域:Scope)