Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 起重变量和函数参数?_Javascript_Hoisting - Fatal编程技术网

Javascript 起重变量和函数参数?

Javascript 起重变量和函数参数?,javascript,hoisting,Javascript,Hoisting,考虑以下示例: function a(a){ console.log(a); function a(){} var a=7; console.log(a); } a(10) 那么为什么第一次打印是一个函数而不是10 函数声明在编译时本身被解析,并且声明被移动到函数的顶部,如下所示 function a(a) { var a = function a() {}; console.log(a); a = 7; console.log(

考虑以下示例:

function a(a){
    console.log(a);
    function a(){}
    var a=7;
    console.log(a);
}
a(10)

那么为什么第一次打印是一个函数而不是10

函数声明在编译时本身被解析,并且声明被移动到函数的顶部,如下所示

function a(a) {
    var a = function a() {};
    console.log(a);
    a = 7;
    console.log(a);
}
a(10)

这就是为什么您会在第一个
控制台中获得
[Function:a]
或类似的东西。log
。当线路
a=7时被执行,
a
被分配值
7
。这就是为什么第二个
console.log
打印
7

的原因,这正是因为提升的缘故。你在用那个词,但你似乎还没有研究它的意思。。。?!我知道提升,但当有函数参数时,我会感到困惑。当函数执行时,函数参数是如何解析的?@SIMDD它们类似于函数中声明的变量。但在本例中,提升后,没有看到函数参数分配?您在谈论哪个函数?还有哪些参数?调用函数时,
a
仅为10。但是函数的第一行是将函数对象分配给变量
a
。因此,值10将替换为函数对象。