函数声明:function a = (num){alert(num+1)}
函数表达式:var a = function(num){alert(num+1)}
开发时,两种声明方式都可以,但要注意一点,解析器在执行环境中对这两种形式的解析顺序是不同的。
解析器会在所有代码执行之前就对函数声明进行解析,无论声明在代码的什么位置,都是优先解析的。但对于函数表达式,解析器是按照代码行的顺序依次执行的。因此会出现如下例子中的情况:
add(1,3); //4
sub(2,1); //报错 Uncaught TypeError: sub is not a function
function add(num1,num2){console.log(num1+num2)};
var sub = function(num1,num2){console.log(num1-num2)};
sub(2,1); //1
网友评论