📌  相关文章
📜  教资会网络 | UGC NET CS 2016 年 8 月 – II |问题 41(1)

📅  最后修改于: 2023-12-03 14:54:50.250000             🧑  作者: Mango

UGC NET CS 2016 年 8 月 – II |问题 41

本题主要考察程序员对 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,并返回变量 xy 的和。由于变量 x 的值为 undefined,因此 undefined + 456 的结果为 NaN。所以最终输出结果为 NaN

输出结果
    console.log(display(456)); // Output: NaN
参考资料