function test1(a = 1) { console.log(a); var a = 2; function a() {} } function test2(a = 1) { console.log(a); function a() {} } test1(); // console log 1 test2(); // console log [Function: a]De acuerdo con la comprensión del izado de variables, la variable a en la primera función tiene el mismo nombre que la función a, y finalmente la función a cubre la variable a, y solo existe la función a en la segunda función. El resultado de salida debe ser el mismo. Entonces, ¿por qué el parámetro predeterminado de la función es válido en la función test1 pero no en la función test2?