执行以下程序,输出结果为()
var a = 100;
function a(){
var a = 200;
console.log(a);
}
a();
A
100
B
200
C
抛出异常
D
f a(){var a = 200;console.log(a);}
正确答案:C
在预解析下,函数和变量都会发生提升,且函数提升在变量提升之前,
故在全局作用域下,a首先被定义为函数变量,接着又被覆盖为一个数值型,然后再调用函数a,显然会抛出异常,原因是a已经不再是函数。
在函数内部,还存在着局部变量a,但它对函数外部的变量不会产生影响
函数提升优先级高于变量提升,且不会被同名变量声明覆盖,但是会被变量赋值后覆盖
由于作用域提升,a首先被定义为函数变量,接着又被声明为一个变量,变量被赋值为一个数值型,然后再调用函数a,显然会抛出异常,原因是a已经不再是函数
标签:200,函数,提升,var,解析,变量 From: https://www.cnblogs.com/longmo666/p/17829212.html