美文网首页
变量声明前置与函数声明前置

变量声明前置与函数声明前置

作者: 学的会的前端 | 来源:发表于2019-01-17 16:06 被阅读0次

变量声明前置

变量声明出现在代码中的任何位置都会在该代码执行前处理,这意味着变量可以在声明之前使用,这个行为叫"hoisting",即把在指定作用域内声明的变量提升到函数或全局代码的顶部。
声明变量的作用域限制在其声明位置的上下文中,而未声明变量总是全局的,所以总在作用域最开始声明变量可以使变量的作用域变得清晰。

示例:
console.log(a);   // undefined
var a  = 1;
console.log(b);  //Referencerror: b is not deined
  • 由上到下执行代码之前,解析器会先找到var关键字,找到了var a ,就提升var a 并将a初始化为undefined
  • 再由上往下执行,读到console.log(a),控制台打印出来的就是undefined。
  • 接着给变量a赋值,如果这个时候在后面加console.log(a),那么控制台打印出来的就是1.
  • console.log(b),在前面没有对b进行声明,所以报错。
    变量会在代码执行之前就创建,初始化并赋值undefined
    变量的声明会提升,变量的赋值不会提升

函数声明前置

使用function关键字可以声明一个函数,他的特征是函数声明提升,执行代码之前会读取函数声明,即声明不必放在调用的前面,可以放在作用域的任何位置。

a();
function a(){
  console.log(''hello'')
}

以上代码没有return,返回值undefined

a();
function a(){
  return(''hello'')
}

以上代码返回值''hello''

JS引擎的过程

  • 扎到所有用function声明的函数,在环境中创建这些函数
  • 将这些函数初始化并赋值为function(){}
  • 开始执行代码a()
    函数提升的优先级高于变量提升的优先级

相关文章

  • 变量声明前置与函数声明前置

    变量声明前置 变量声明出现在代码中的任何位置都会在该代码执行前处理,这意味着变量可以在声明之前使用。这个行为叫"h...

  • 变量声明前置与函数声明前置

    变量声明前置 变量声明出现在代码中的任何位置都会在该代码执行前处理,这意味着变量可以在声明之前使用,这个行为叫"h...

  • 声明前置

    变量的声明前置 用var创建变量,声明会前置 如果上面没用 var 声明变量,直接使用就是会报错 函数的声明前置 ...

  • 函数与作用域

    函数声明与函数表达式的区别 变量的声明前置与函数的声明前置 arguments 通过以下语句可将arguments...

  • 关于函数

    1. 函数声明和函数表达式有什么区别? 2. 什么是变量的声明前置?什么是函数的声明前置? 变量声明前置:所谓的变...

  • 用几个demo帮助理解JS作用域链和声明前置

    声明前置 变量的声明前置:指在变量被定义时,会在代码执行之前将变量放在最前面进行初始化。 函数的声明前置:会将函数...

  • 函数与作用域

    1.函数声明和函数表达式有什么区别 2.什么是变量的声明前置?什么是函数的声明前置 所谓的变量声明前置就是在一个作...

  • 2-3.函数与作用域

    1.函数声明和函数表达式有什么区别? 2.什么是变量的声明前置?什么是函数的声明前置? 就是var变量和funct...

  • JS -函数及其作用域

    1、函数声明和函数表达式有什么区别 2、什么是变量的声明前置?什么是函数的声明前置 3、arguments 是什么...

  • zj3 函数与作用域

    讲解函数声明、函数表达式、声明前置、作用域、作用域链相关概念 函数声明和函数表达式有什么区别 什么是变量的声明前置...

网友评论

      本文标题:变量声明前置与函数声明前置

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