简介 我们基本都知道,函数的声明方式有这两种 function msg(){alert('msg');}//声明式定义函数 var msg = function(){alert('msg');}//函数赋值表达式定义函数 但其实还有第三种声明方式,Function构造函数 var msg = new function(msg) { alert('msg') } 等同于 function msg(msg) { alert('msg') } 函数的调用方式通常是 方法名() 但是,如果我们尝试为一个“定义函数”末尾加上 () ,解析器是无法理解的。 function msg(){ alert('message'); }();//解析器是无法理解的 定义函数的调用方式应该是 print() ; 那为什么将函数体部分用 () 包裹起来就可以了呢? 原来, 使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。 也就是说,任何能将函数变成一个函数表达式