美文网首页
函数提升和变量提升,以及他们的优先级(转)

函数提升和变量提升,以及他们的优先级(转)

作者: D_R_M | 来源:发表于2019-01-01 17:08 被阅读24次

一、变量提升

在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。

(1) 创建函数有两种形式,一种是函数声明,另外一种是函数字面量,只有函数声明才有变量提升

console.log(a)  // f a() { console.log(a) }
console.log(b) //undefined
    
function a() {
        console.log(a) 
}

var b = function(){
        console.log(b)
}

相当于

var a = 'function'
var b
console.log(a)
console.log(b)

(2)变量提升

console.log(c);   //undefined
var c = "第一次没打印出来,第二次才出来";
console.log(c);   //第一次没打印出来,第二次才出来
function fn(){
        console.log(d); //undefined
        var d = '和前面的一样啊';
        console.log(d); //和前面的一样啊
}

fn();

其实,就相当于

var c ;
console.log(c)
c = " xxxx "
console.log(c)

二、函数提升与变量提升的优先级

console.log(a);    // f a() {console.log(10)}
console.log(a());    //  undefined
var a = 3;

function a() {
        console.log(10) //10
}
console.log(a)   //3
a = 6;
console.log(a());  //a is not a function;

原理 :

 var a = funtion () {
        console.log(10)
 }
 var a;
 console.log(a);    // f a() {console.log(10)}
 console.log(a());  //  undefined

 a = 3;
 console.log(a)   //3
 a = 6;
 console.log(a());   //a() is not a function;

由此可见函数提升要比变量提升的优先级要高一些,且不会被变量声明覆盖,但是会被变量赋值之后覆盖。

转自:https://www.cnblogs.com/oxiaojiano/p/7918967.html

相关文章

  • 2021-04-02

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

  • 函数提升和变量提升,以及他们的优先级(转)

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

  • 关于变量提升

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

  • JS中的提升

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

  • JS 函数声明和函数表达式的区别

    函数声明和函数表达式的区别优先级JavaScript的变量声明提升机制-即可以先使用,后声明函数声明会被提升到作用...

  • 引用类型

    变量提升和函数声明提升   函数声明提升就是把函数声明提升到函数声明所在作用域中(或者说一个函数体内)的顶端,变量...

  • Javascript变量提升以及函数提升

    引入 下面的代码变片段会如何输出? 运行后,控制台第一个console.log(a)会输出1,而第二个consol...

  • JS变量提升以及函数提升

    在正题开始之前,让我们先来总结一下:首先,我们需要明白浏览器是如何解析JS代码的,浏览器引擎在读取JS代码的过程中...

  • 变量提升

    变量提升 Hoisting 变量和函数的声明会在编译时被提升到作用域的顶部 提升的是声明,函数会连带函数体提升 i...

  • let const var

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

网友评论

      本文标题:函数提升和变量提升,以及他们的优先级(转)

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