进阶学习js中的执行上下文

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进阶学习js中的执行上下文相关的知识,希望对你有一定的参考价值。

  在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文。

1、当遇到变量名和函数名相同的问题。

var a = 10;
function a(){
    console.log(1);
}
a(); //报错

  如果你觉得函数a会覆盖变量a那你肯定是js的新朋友,为什么这里会报错呢?我记得我在基础的执行上下文文章中说过变量声明提前的概念,对这里就是因为这个原因,但是在上面一篇文章中还有一个问题我没有去讲。

  那就是函数的声明比变量的声明顺序更早,上面那段代码相当于下面这段代码:

function a(){
    console.log(1);
}
var a = undefined;
a = 10;
a();

函数a被变量a覆盖了。

  2.当函数在另外一个函数中调用的时候

var a = 1;
function fn1(){
    console.log(a);
}
function fn2(){
    fn1();
}
a = 2;
fn2(); //2

  这里没有输出1是因为fn1嵌套在fn2中,所以函数fn2没有执行的话,fn1自然也没有被执行,又因为fn2是在a赋值为2以后才执行的所以fn1打印的就是2,此时a的值就是2。

到这里,关于js的执行上下文就可以告一段落了,当然如果后期遇到其他的问题,会继续更新到这一文章中,之所以这一章讲解的比较简单是因为有上面一节的基础。

以上是关于进阶学习js中的执行上下文的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中高级进阶推荐一个JavaScript进阶深入系列专题系列(涉及原型作用域执行上下文变量对象this闭包按值传递callapplybindnew继承等

用实例带你走进this执行上下文世界[js篇一]

js插件进阶JS中的call()和apply()方法详解

学习笔记JS进阶语法一事件进阶

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段