美文网首页
变量提升

变量提升

作者: newway_001 | 来源:发表于2019-02-25 19:56 被阅读0次
a()
var a = c = function() {
    console.log(2)
}
//a is not a function

a()//2
function a(){// 函数声明 脚本在执行之前会做预编译处理
    console.log(2)
}

会预编译函数,对于变量,只会分配一个内存空间,不会初始化,初始化过程中会在执行时执行。

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

函数表达式覆盖掉了函数声明。

 var a=10;
    function fn(a,b){
        console.log(a)//function a(){}   这里输出function a(){}, 不是参数a的值,哈哈
        var a=10;
        console.log(a)//10
        function a(){}
        console.log(a)//10
    }
    fn(15);

对于函数而言,形参 < 函数声明,所以,第一个是输出a函数,而不是15

函数预编译相当于把函数放在环境最上方,重新定义a=10,更改了a的值

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

    function a() {
        console.log(1)
    }
    a();//2
    (function(b) {
        b();//2    a传递给形参b,
        c();//2    自由变量c
        var b = c = function a() {
            console.log(3)
        }//重新定义
        b()//3
    })(a);//走到这里 a已经被赋值表达式重新赋值
    c();//3 自由变量被改变
function fn(){
        function a(){console.log(1)}
        return a;
        function a(){console.log(2)}
    }
    fn()();//2 由于预编译,2个function提到最前面

相关文章

  • 浅析关于 JS 作用域的几个高频知识点

    闭包 词法作用域 变量提升 变量提升 什么是变量提升 顾名思义,变量提升指的是,在声明变量的时候,变量的声明位置会...

  • JS中的提升

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

  • 变量提升问题

    这是 变量提升问题 1. 变量提升, 很简单,就是把变量提升提到函数的top的地方。我们需要说明的是,变量提升 只...

  • JavaScript__变量声明提升(Hoisting)

    摘取:http://www.jb51.net/article/30719.htm 变量提升 变量提升就是把变量提升...

  • var,let,const 的区别

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

  • 执行上下文和执行上下文栈

    一、变量提升和函数提升 首先回顾一下什么是变量提升。 变量声明提升,通过var定义(声明)的变量,在定义语句之前就...

  • let const var

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

  • 2021-04-02

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

  • 关于变量提升

    函数提升的优先级要高于变量提升,变量提升到函数声明的后面; 变量提升,但是赋值不提升,函数表达式不提升;

  • Javascript 变量执行过程 和 数组 & 对象的区别

    变量提升 JS执行过程1. 先提升(先提升函数,再提升变量,如果名字一样,变量提升会覆盖函数提升)2. 再执行,如...

网友评论

      本文标题:变量提升

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