我的案例的函数声明和函数表达式之间的区别

pra*_*dev 7 javascript function ecmascript-6

有人请解释这里发生了什么.

 var y = 1;
 if (function f(){return 'some text';}) {
     y += typeof f;
 }
 console.log(y);// "1undefined"
Run Code Online (Sandbox Code Playgroud)

如果我把它改成函数表达式

 var y = 1;
 if (a = function f(){return 'some text';}) {
     y += typeof a;
 }
 console.log(y);// "1function"
Run Code Online (Sandbox Code Playgroud)

Jon*_*lms 4

语句的条件if始终是表达式。在第二种情况下,它是一个将全局(!)变量设置a为函数的赋值表达式,在第一种情况下,它只是一个函数表达式,并且该函数不会进入任何地方(它不会存储在任何地方)。只是函数本身内部f的函数名称(用于递归)。因此在它之外没有定义。f