首页 > 试题广场 >

执行以下程序,输出结果为() var a = 100; fu

[单选题]

执行以下程序,输出结果为()

var a = 100;

function a(){

var a = 200;

console.log(a);

}

a();

  • 100

  • 200

  • 抛出异常

  • f a(){var a = 200;console.log(a);}

  function a() {
    var a = 200;
    console.log(a);
  }
  var a;
  a = 100;
  a();
个人感觉是这样。因为是函数声明所以提升到最前面,并且优于变量声明,之后a重新赋值,所以TypeError
发表于 2021-12-15 09:08:56 回复(5)
由于函数提升在变量提升之前,所以函数声明有效,之后变量赋值为100,所以a不是一个函数,不能当做函数调用。
发表于 2021-12-09 18:09:21 回复(8)
函数预解析
  var a        //  此处a即为函数名 又为变量名 
a=function () {    //函数提升大于变量提升
    var a = 200;
    console.log(a);
  }     
 a = 100;     ES5中用var申明的变量存在变量提升  赋值留在原地
  a();    //后设覆盖先设,此处a=100,所以报错
发表于 2022-01-02 23:32:59 回复(1)
a覆盖a()  想杀人  var不用了就来出题目搞人心态
发表于 2022-01-05 14:16:56 回复(0)
以后谁这样先刀了谁
发表于 2022-12-08 11:43:21 回复(0)
// 函数和变量会发生提升相当于下面的代码:

// 变量提升比函数提升的优先级高
var a
function a() {
  var a = 200
  console.log(a)
}

a = 100 // a 被重新覆盖成了 number类型
a()   // 所以这里发生了类型错误


编辑于 2022-05-05 14:48:30 回复(1)
    var a;
    function a() {
        var a;
        a = 200;
        console.log(a);
    }
    a=100;
    a();  
声明提前后,结果100赋值给a ,a就不是方法,所有会报错
发表于 2022-09-07 17:10:13 回复(1)

AI回答
在 JavaScript 中,当你声明一个变量和一个同名的函数时,函数声明会覆盖变量声明。在你的代码中,var a = 100; 这个变量声明被函数声明 function a() {...} 覆盖。

然而,问题出在函数调用上。在声明函数之后,你试图通过 a(); 来调用函数。由于函数声明覆盖了变量声明,此时 a 变成了一个函数。但在全局作用域中,a 又是一个变量,这就导致了混淆。

当你尝试调用 a(); 时,JavaScript 引擎发现 a 不是一个函数,而是一个变量,因此抛出了 "a is not a function" 的异常。

编辑于 2024-01-19 14:36:53 回复(0)
函数提升和变量提升哪个的优先级更高呀
发表于 2023-03-20 21:25:15 回复(1)

var a = 100;

function a(){}

a();
就这样都是报错,大概是重名了吧,而且函数提升到前,变量声明在后,所以把a变量当成函数调用了,所以报错:a is not a function,a不是一个函数
发表于 2022-06-29 14:44:55 回复(0)
函数提升先于变量提升
发表于 2022-06-06 18:33:09 回复(0)
函数和变量都会提升,函数优先于变量
发表于 2022-10-06 11:19:23 回复(0)
先是函数a()有效,但是后定义变量a也有效,使得a为变量,而非函数,所以不能使用函数的方法调用(变量提升引起)
发表于 2022-04-23 12:47:39 回复(0)