关于js作用域

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于js作用域相关的知识,希望对你有一定的参考价值。

1.js没有块级作用域,只有函数级作用域,函数外面的变量函数里面可以找到,函数里面的变量外面找不到。

2.

  var t = "bb";
  function test() {
    //执行t的时候,它会先找作用域链对象,由于它定义在函数内部,所以这个函数就是它的作用域链的第一个对象
    //而在这个对象里又有t的定义,所以t就是局部变量了,它替换了全局变量t

    //t只是此时有定义,但并没有赋值,赋值在下一行,所以这里输出了undefined
    alert(t);
    var t = "aa";
    alert(t);
  }
  test();  //结果为undefined/bb,编译时局部变量替换全局变量,输出前没有赋值,所以第一个弹出undefined(预解析)。

3.

    function aaa() {
          var a=b=0;
    }
    aaa();
    console.log(a); //a没有定义,在函数中为局部变量
    console.log(b); //0,相当于全局变量

4.当参数跟局部变量重名时,优先级是等同的。

  var a = 10;
    function aaa(a) {
    alert(a);
    var a = 20;
  }

  aaa(a); //结果为10

5.

  var arr = [];

  arr[0] = "a";

  arr[1] = "b";
  arr.foo = "c";
  console.log(arr.length); //结果为2,foo为对象

6.所有属于全局作用域的变量都是window对象的属性.

以上是关于关于js作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS(作用域)_关于作用域的注意点

#导入MD文档图片#关于JS中的作用域中的沉思

关于作用域

js关于“变量提升作用域私有作用域等知识点”高级解题思路

关于JS里的函数作用域链的总结

关于 js 的作用域的对话过程的理解