gpt4 book ai didi

Javascript 未定义的数组值

转载 作者:行者123 更新时间:2023-11-30 07:06:10 24 4
gpt4 key购买 nike

为什么会报错:

var a = [c];
// ERROR: c is not defined

但这不会(但会导致未定义):

var a = [c];
var c = 'x';
console.log(a); // [undefined]

jsFiddle

最佳答案

它称为提升,意味着您的 Javascript 引擎将声明所有var 语句和函数声明 解析时间。换句话说,在执行该脚本时,您所有的 var 语句都已声明(但未定义)。

这有时会很麻烦。示例:

var foobar = true;

function what() {
if( foobar ) { // should be true, no?
alert('foobar is defined');
}
else {
alert('huh, where is foobar??');
var foobar = true;
}
}

如果我们运行 what(),我们会得到 huh, where is foobar?? 消息。这是因为在 what 的执行上下文中,当解释器读取我们的代码时,变量 foobar 被声明(未定义)。声明总是undefinedvar 语句在上下文中的位置并不重要!它总是被“提升”。

完全避免此类错误的一个好建议是,在每个上下文/函数的顶部声明和定义您使用的所有变量。

现在看看您的示例代码,我们可以很容易地回答发生了什么。

var a = [c];
var c = 'x';
console.log(a); // [undefined]

一旦我们的 javascript 解释器读取该代码,它就会声明变量 ac。这看起来像

var a, c;
a = [c];
c = 'x';

或者,更富有表现力

var a = undefined, c = undefined;
a = [c]; // c is undefined
c = 'x'; // and finally gets defined as 'x', but too late.

关于Javascript 未定义的数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6897893/

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