美文网首页
作用域以及变量提升

作用域以及变量提升

作者: 432183 | 来源:发表于2018-03-07 11:11 被阅读0次

函数的作用域

从函数定义到执行: 1.编译 2.执行。函数的作用于在编译时就已经决定了。

Var name = ‘gf’;

function foo() {

  Var name = ’temp’;

  function change() {

    return name;

  }

  Return change();

}

foo(); //执行结果为temp;
Var name = ‘gf’;

function foo() {

  Var name = ’temp’;

  Function change() {

    Return name;

  }

  Return f;

}

foo()(); //执行结果为 temp;

变量提升之 - - 先有鸡先有蛋

第一段代码

a = 2;

Var a;

console.log(a); //2

第二段代码

console.log(a);

Var a = 2; //undefined

为什么第一段代码执行结果为2呢?这里简要解释一下。

包含函数和变量在内的声明都会在任何代码执行之前声明。当我们看到 var a = 2, 会看成为是一个声明,但其实javascript 会看成为两个声明。 1.var a; 2. a=2; var a 会在程序编译时执行, 而 a = 2 则会在原地等待。

所以第一段代码可以解释为:

编译时: var a;

执行时: a = 2; console.log(a);

所以从严格意义上来说代码还是一行一行执行。

第二段代码解释为:

编译时: var a;

执行时: console.log(a); //所以此时结果为undefined; a = 2;

函数声明的提升

Foo();

Function foo() {

  Console.log(‘foo’);

}

此函数可以正常执行:

1.  编译时: 声明 函数foo
2.  执行时: 执行 foo

函数表达式不可提升

foo();

Var foo = function ( ) {

  console.log(‘foo’);

}

这段代码的执行结果:

image.png

说明:这段代码报的错误为TypeError, 而非 ReferenceError. 说明找到了这个声明但这个声明并不是一个函数。

*
TypeError: 在作用域内找到,但是并不是可执行的类型
ReferenceError: 在作用域内未找到。*

相关文章

  • 作用域以及变量提升

    函数的作用域 从函数定义到执行: 1.编译 2.执行。函数的作用于在编译时就已经决定了。 变量提升之 - - 先有...

  • 全面理解作用域

    es5:函数作用域、全局作用域 (var 、function有变量提升)es6:块级作用域 (没有变量提升...

  • let const var

    变量提升 函数会优先于变量提升; 函数提升会把整个函数移到作用域顶部 变量提升智慧把变量的定义移到作用域顶部 wi...

  • 作用域与变量提升

    作用域与变量提升 作用域 JS中变量的作用域有全局作用域和局部作用域两种,作用域简单来讲就是变量与函数的可访问范围...

  • var,let,const 的区别

    变量提升 变量提升即将变量声明提升到它所在作用域最前面,而且仅仅是提升变量,不会提升所赋的值 执行流程 作用域 在...

  • 2021-04-02

    变量提升和函数提升以及他们的优先级 1,变量提升:变量提升是指将变量声明提升到它所在的作用域的最开始部分 2,函数...

  • JS 作用域以及变量提升

    变量作用域又叫变量的可见性 在 JavaScript 中作用域可以分为两种: 全局作用域 块级作用域 (局部作用域...

  • var let const之间的区别?

    1.var ①var声明的变量没有块级作用域,只有函数作用域和全局作用域 ②var声明的变量有变量提升 ③变量可以...

  • 第三章 函数

    变量作用域   以上例子中函数作用域会覆盖始终优先于全局作用域,所以局部变量a会覆盖掉全局作用域的a,变量提升不会...

  • 块作用域和let、const

    在ES6之前,JavaScript没有块级作用域,只有全局作用域和函数作用域。 变量提升即将变量声明提升到它所在作...

网友评论

      本文标题:作用域以及变量提升

      本文链接:https://www.haomeiwen.com/subject/psqjfftx.html