关于undefined在函数中被重新赋值后的变化

本文深入解析JavaScript中undefined在不同作用域及函数构造方式下的行为,包括其如何提升到作用域顶部,以及如何影响局部变量的定义和赋值。通过具体示例,清晰阐述了undefined在作用域提升过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       var undefined = 123;
function a(something, undefined) {


alert(undefined);//123
}
a('Hello World',42);
var undefined = 123;
(function(something, foo, undefined) {
// 局部作用域里的 undefined 变量重新获得了 `undefined` 值
alert(undefined);//undefined
})('Hello World', 42);

一个函数不同的构造方式,结果却恰恰相反,谁能给解释下。。。

看了一篇文章,琢磨透了。。

()是定义的一个作用域。。undefined会把作用域内的变量(undefined)提到作用域开始先赋值。。

因为foo,something作为参数已经赋值,而undefined没有赋值,所以被重新定义为undefined。(如果再加一个参数,argu2,打出来也是undefined)

结合另外一个例子,加深理解下

var myvar = 'my value';  

(function() {
alert(myvar); // undefined
var myvar = 'local value'; //1
})();

看上去和上面的undefined一样,其实注意(1)处,其实这个赋值,会导致提升变量声明,

var 表达式(和 function 声明都)将会被提升到当前作用域的顶部。”

相当于

var myvar;
alert(myvar);
....

下面看一个function提升声明的例子

                //bar();报错
var bar = function() {alert('bar');};
var someValue = 42;

test();
function test(data) {
alert('test');//打印
}





转载于:https://www.cnblogs.com/sking7/archive/2011/10/09/2204848.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值