美文网首页
js 函数和变量提升

js 函数和变量提升

作者: Vergil_wj | 来源:发表于2021-06-08 08:26 被阅读0次

js 中函数和变量的声明都将被提升到函数的最顶部。

我们平时的写法是先声明后使用:

    var y = 7
    console.log(y)

变量的提升则是可以先使用,后声明:

    y = 7
    console.log(y)
    var y

函数的提升:函数可以在声明之前被调用

    //先调用
    myFunction(5)
    //后声明
    function myFunction(y){
      console.log(y * y)
    }

想要理解以上,需要了解hoisting(声明提升)
声明提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。

初始化不会提升

    console.log(y)  // undefine
    var y = 7

输出 undefine,这是因为变量var y提升了,但初始化y=7不会提升,所以 y 就是一个未定义的变量。

上面的写法相当于:

    var y
    console.log(y) //undefine
    y = 7

使用函数表达式,也不会得到提升,道理同上。

    b(5)
    var b = function myFunction(y) {
      console.log(y * y)
    }

以上会直接报错:b 不是一个函数。

在头部声明变量

通常情况下还是在作用域开始前就声明这些变量,这是正常的 js 解析步骤,也是我们平时的写法,利于理解,不会出错。

参考

JavaScript 声明提升

相关文章

  • JS中的提升

    JS中包含两种提升,变量提升和函数提升。 变量提升 变量提升只能是var或者function声明的变量或者函数,l...

  • js中变量和函数声明的提升

    二 、 js中变量和函数声明的提升

  • js面试题

    1、js 数据类型 基本数据类型 引用数据类型 2、js 变量和函数声明的提升 在js中变量和函数的声明会提升到最...

  • 深入理解js变量提升和函数提升

    一. 变量提升 这就是变量提升,实际上它的执行顺寻为: 二. 函数提升js中创建函数有两种方式:函数声明式和函数字...

  • JS笔记 命名问题

    JS中函数和变量重名时,后声明的覆盖先声明的,后赋值的覆盖先赋值的。 变量提升和函数提升时,变量的声明是在函数的声...

  • js 的变量提升和函数提升

    1. 深入理解 js 的变量提升和函数提升 先了解:js没有块级作用域,只有全局作用域,和函数作用域 相同的函数名...

  • 浏览器学习笔记-JS执行

    变量提升 变量提升原理浏览器对js是先编译后执行,在编译过程中,js中的变量声明会被提升到代码段落前面。函数声明和...

  • js 函数提升和变量提升

    原文:https://www.cnblogs.com/libin-1/p/6101185.html TEST ! ...

  • js 变量提升和函数提升

    一、变量提升 在es6之前,javascript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域...

  • js 变量提升和函数提升

    在js中只有两种作用域,全局作用域和函数作用域,在ES6之前,js是没有块级作用域。 JavaScript 代码的...

网友评论

      本文标题:js 函数和变量提升

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