JS中函数声明和函数表达式的区别
-
函数声明:
通过函数声明模式定义的函数会通过 JS解析器 在其定义的作用域中提前被声明,也就是说,即使函数在最后一行声明,在执行的时候,也会在其作用域的开始被解析到,并能够在函数声明前面调用该函数。
<script> sayHello(); //控制台输出:hello, world! function sayHello() { //函数声明 console.log("hello, world!"); } sayHello();//控制台输出:hello, world! </script>
-
函数表达式:
通过函数表达式定义的函数和函数声明相反,它不会被 JS解析器 提前声明,只有在运行的时候,运行到该函数表达式时该函数才会被定义,同时也只能在该函数表达式后面调用该函数。
<script> sayHello(); //控制台会在这里报错:sayHello is not a function. //表示函数 sayHello 没有被定义。 var sayHello = function() { console.log("hello world"); } sayHello();//控制台输出:hello, world! </script>