js变量提升相关的问题

为什么最后一行 a的值是10 而c的值是200

因为a是fn函数的参数,是一个局部变量,局部变量的值改变并不会影响全局变量的。

把fn(10)改成fn(20) 最后的结果还是10 没错, 因为a的值只是在fn()内发生了改变,并没有引起外部的改变。

fn()内加返回:return a;  这时在外部  a= fn(temp)则  外部a值发生变化

var a = 10;
var b = 20;
var c = 30;

function fn(temp){
    console.log("1:"+a,b,c);
    a = 100;
    c = 200;
    console.log("2:"+a,b,c);
    return a;
}
	
b = fn(10); 
console.log("3:"+a,b,c); 
//1:10 20 30
//2:100 20 200
//3:100 100 200

 

var a = 10
    b = 20
    c = 30

function fn(temp){
    console.log("1:"+a,b,c);
    a = 100;
    c = 200;
    console.log("2:"+a,b,c);
}

b = fn(10); 
console.log("3:"+a,b,c); 

//1:10 20 30
//2:100 20 200
//3:100 undefined 200

 

var a = 10
    b = 20
    c = 30

function fn(temp){
    console.log("1:"+a,b,c);
    a = 100;
    c = 200;
    console.log("2:"+a,b,c);
    return a;
}

b = fn(10); 
console.log("3:"+a,b,c); 

//1:10 20 30
//2:100 20 200
//3:100 100 200

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632