Javascript 使用警报或提示时的古怪变量行为
我正在学习Javascript,遇到了一些我认为是奇怪的行为 下面的简单代码在控制台日志中生成预测结果。它显示的短语是HelloJavascript 使用警报或提示时的古怪变量行为,javascript,variables,Javascript,Variables,我正在学习Javascript,遇到了一些我认为是奇怪的行为 下面的简单代码在控制台日志中生成预测结果。它显示的短语是Hello var test = "Hello!"; console.log(test); 然而,下一个代码段返回了一些我没有预料到的东西。它在控制台日志中返回undefined。此外,即使从未在函数中调用或使用该警报,也会自动执行该警报。这两行是完整的代码 var test = alert("Hello!"); console.log(test); 为什么会弹出警报,为什么
var test = "Hello!";
console.log(test);
然而,下一个代码段返回了一些我没有预料到的东西。它在控制台日志中返回undefined。此外,即使从未在函数中调用或使用该警报,也会自动执行该警报。这两行是完整的代码
var test = alert("Hello!");
console.log(test);
为什么会弹出警报,为什么console.log未定义?我正试着弄清楚机械学,所以提前谢谢你
window.alert()
调用在执行时不返回任何内容,因此它是未定义的。未定义的值存储在写入控制台的test
中 函数调用类似于任何其他语句。它不需要在另一个要求值的函数中。如果它在任何函数之外,则将立即对其进行求值
当您调用alert(“Hello!”)
时,它会被调用,并将其返回值传递到左侧
alert
函数返回undefined
,这就是您在记录时看到的原因。因为alert不会返回任何内容。。。所以它是未定义的。alert()
和console.log()
都是函数。您期望什么var test=alert(“Hello!”)代码>要做什么?你所说的“[警报]从未被调用”是什么意思?您调用了alert()
函数,并将返回的内容保存到test
中。然后您调用了console.log()
函数。我用一个新函数var test=myFunction()测试了您所说的内容
并且确信该函数会像警报函数一样自动运行。因此,在Javascriptvar中,测试不一定要等待其他代码调用。页面加载后,变量内部的代码自动开始运行?@DR01D:JavaScript逐行执行。当您调用一个函数时,即在其后面添加()
,它将运行。比较警报()
;和var test=alert()代码>。两者都运行alert()
@DR01D-var测试
是指调用函数时得到的返回值,而不是函数本身。要分配函数,您必须使用var test=alert
,而不使用()
。并非总是这样。这个变量中的函数只有在被调用时才会运行,var test=function(){document.getElementById(“demo”).innerHTML=“Hello!”
}但是当我添加test()时代码>它运行。@DR01D-这是因为您已从使用变量(警报
)更改为使用创建新函数的函数表达式,该变量的值为函数(并且在调用该函数之后使用函数)。如果将()
放在末尾,则会立即调用该函数var test=function(){document.getElementById(“demo”).innerHTML=“Hello!”;}()
。