📅  最后修改于: 2023-12-03 14:54:50.250000             🧑  作者: Mango
本题主要考察程序员对 JavaScript 语言特性的理解。
下面JavaScript代码的输出是什么?
var x = 123;
function display(y){
return x+y;
var x = 456;
}
console.log(display(456));
对于这个问题,程序员需要了解 JavaScript 变量作用域与提升的特性。
JavaScript 中的变量存在两种作用域:全局作用域和局部作用域。在函数内部声明的变量称为局部变量,仅在函数内部可见。而在函数外部声明的变量则为全局变量,可以在任何地方访问。
在 JavaScript 中,函数内部的变量声明会被提升到函数的顶部。因此在上述代码中,变量 x
的声明被提升到了函数 display
的顶部,但是赋值操作却没有被提升,因此此时变量 x
的值为 undefined
。
对于函数 display
,它接受一个参数 y
,并返回变量 x
与 y
的和。由于变量 x
的值为 undefined
,因此 undefined + 456
的结果为 NaN
。所以最终输出结果为 NaN
。
console.log(display(456)); // Output: NaN