声明函数方式
-
函数定义(允许在前面调用,因为浏览器会优先解析定义函数的代码)
a();//可以执行,js会优先解析函数a function a(){ alert(this);//window } //相当于window.a() //报错 函数定义不可以直接定义后面加括号自执行 function f(){ console.log(i); }()
//定义在script最外层的变量,叫全局变量 //定义在函数里的变量,叫局部变量
-
函数表达式(不允许在前面调用)
a(); //报错 var a = function(){ alert(1); } //函数表达式,可以直接在后面加括号执行 var a = function(){ console.log(1); }();
函数表达式自执行(定义函数并立刻执行)
/* * 避免污染全局变量 * 让每个模块独立开发 */ //函数表达式自执行 (function j(){ //全局没有j变量 var x = '132';//局部变量 console.log(x); }) ();//把函数加括号括起来,变成一个表达式 //模块化 (function(){ var x = '123'; console.log(