gpt4 book ai didi

javascript - 变量名就像函数名——什么时候会导致错误/什么时候不会

转载 作者:搜寻专家 更新时间:2023-11-01 04:14:13 25 4
gpt4 key购买 nike

这道题是关于函数和变量的同名。请告诉我 -为什么这段代码没有错误:

    var Task = new Task();

function Task() {
console.log('work!');
}

但是这个行不通:

start();

function start() {
var Task = new Task();
};

function Task() {
console.log('work!');
}

为什么会这样?

最佳答案

通过名称提升,您的第一个代码基本上是这样工作的:

var Task;  // (undefined)

Task = function () {
console.log('work!');
};

Task = new Task();

你的第二个像这样:

var start, Task;

start = function () {
var Task; // (undefined)
Task = new Task();
};

Task = function () {
console.log('work!');
};

start();

如您所见,Taskstart 函数中的 undefined 覆盖。当函数和变量定义都在同一范围内时,这不会发生,因为那时 varfunction 本质上是同一件事。

如果您在 start 中省略 var,它也能正常工作。

关于javascript - 变量名就像函数名——什么时候会导致错误/什么时候不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148104/

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