gpt4 book ai didi

Javascript 变量声明和作用域

转载 作者:行者123 更新时间:2023-11-28 13:53:03 24 4
gpt4 key购买 nike

<html>
<head>
<script type='text/javascript'>
var process = function (test) {
var i = test;
this.echo = function () { console.log(i); };
};
var test = 'hai';
var hai = new process(test);
hai.echo();
test = 'sorry';
hai.echo();
</script>
</head>
<body style='height:1000px;width:100%'>
</body>

在执行上述测试脚本时,我得到了两次“抱歉”,我预计是“hai”然后是“hai”。

当我将第 5 行更改为 [随机尝试]

var i = (function () {return test;})();

我明白了“海”和“海”

它在案例 2 中是如何工作的,为什么在案例 1 中不起作用?

AFAI,javascript 会进行变量提升,因此 test 将在作用域开始时被初始化为 undefined,并且当它被分配时将被重新分配值(value)观。但在这里这并没有帮助我。

最佳答案

您将按引用传递按值传递混淆了。 JavaScript only允许后者(尽管您可能在其他地方读到过)。

在本例中,您将值 "hai" 传递给 process 构造函数。然后将该值存储在内部作用域中的 i 变量中。之后更改 test 的值不会更改 i 的值。

出于同样的原因,您的两个测试用例都没有按照您的预期工作。

关于Javascript 变量声明和作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9615878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com