您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 作用域解析 >

js的解析顺序 作用域 严格模式

发布时间:2019-07-02 05:09 来源:未知 编辑:admin

  我们大家所理解的代码的执行顺序都是从上到下的,但是实际上确不是这样的。我们看一下下面的代码。

  如果执行顺序是从上到下的,在上面弹出一个a,浏览器会认为从上到下执行的,那么当它alert(a)的时候,他就会发现没有这个东西,那么他就会报错,但是实际上他弹出来的结果是undefined。返回值是undefined说明a没有被定义也就是没有赋值。下面我来讲解一下javascript的解析顺序。

  1.找声明 var、function 声明:只是声明变量,而不包括赋值。

  注意:当function声明的变量和var声明的变量重名时,function的变量权重会比var声明的要高。

  下面多来几个例子解析一下就清楚许多了,但是看例子之前要知道一下什么叫作用域。

  alert(x); 这个x在函数作用域中存在,并且还没有执行到赋值的那一步,那么弹出的东西就是undefined;

  我相信看了这两个例子的人都对这个解析过程都有了清除的了解,如果还是不太了解,建议重新看一次。

  前面讲到了当function声明的变量和var声明的变量重名时,function的变量权重会比var声明的要高。来一个例子证明一下

  alert(a) 前面说到了function的声明比var声明的权重高,所有执行这个的时候他会弹出这个 函数块(函数体)

  子作用域可以向父级作用域找变量,直到全局作用域为止,反之不行。 如果子作用域有同样的变量,那么他就会使用自己的,不会去找爸爸要。

  alert(b); //我们看一下返回值是多少b is not defined 他说b没有被定义,说明父作用域不可以向自作用域去寻找变量。

  当一个变量无中生有时,不管从哪个作用域出来的,统统归到window下,下面看两个例子

  a = 1; 这个时候就说到了那一点,无中生有的变量,统统归到window下面

  当我们写后面两句代码的时候不会报错和出现问题,但是当我们加上第一句代码的时候,我们在这样写的时候就会报错了。所以我们还是按照规范的标准来,提高自己的能力

  五、可能好多人做了上面的例子感觉不太过瘾,下面我再给出几个例子,可以自己去分析分析,我会在最后面给出答案。

  3.第三个例子 当同样的声明同样的名字重复时,后面写的会覆盖前面写的 //2 1 1 3

http://ampguimods.com/zuoyongyujiexi/127.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有