自执行函数变量提升问题

var foo='hello';
(function(foo){
console.log(foo);
var foo=foo||'world';
console.log(foo);
})(foo);
console.log(foo); 三次分别输出什么?
JS代码自上而下执行的时候,自执行函数不在进行变量提升,但是函数内部的变量提升还进行吗?food ||“world”改怎样理解?

2个回答

等价于下面


    var foo = 'hello';
    (function (foo) {
        var foo = undefined;
        foo=//传入的foo的值
        console.log(foo);//hello
         foo = foo || 'world';//因为foo有值所以没有赋值world
        console.log(foo);//hello
    })(foo);
    console.log(foo);//hello,变量作用域,变量普通类型和引用类型的问题

。。》javascript运行机制浅析

showbo
支付宝加好友偷能量挖,胡杨等着我的招呼 回复BrightLD: var最前
大约 3 年之前 回复
BrightLD
BrightLD 形参赋值不应该在变量提升前面吗?
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐