JavaScript学习笔记

函数声明和函数表达式

函数可以赋值给变量,可以作为参数来传递。

// 声明了一个叫做t的变量,并且变量的内容是 function t(){return 5;}
function t1(){
	return 5;
}
alert(t1);

// 函数表达式: 产生一个名为jia的变量
var t2 = function (name){
 	console.log("这是一个匿名函数"+"+"+name);
};
jia("假某某");

这两种方式效果是不同的。
t1是函数声明,虽然全局内也得到一个t1变量,但值是function
而t2只是一个赋值过程-----值是谁?值是右侧表示式的返回结果,即函数

匿名函数

// 匿名函数: 没有产生变量
(function (name){
	console.log("这是一个匿名函数"+"+"+name);
})("假某某");

jQuery的对匿名函数应用

(function(window,undefined){})(window);
这是jquery的最外层代码,
function(window,undefined){}
//内层表达式,返回值是函数,包在小括号内,当作表达式来执行。
function(window,undefined){}()//立即调用。

//而内层函数又没有命名,称为匿名函数
//这种手法,匿名函数,立即执行,不污染全局。称为立即执行匿名函数表达式
//思考为什么传window又不传undefined?
//答:传window是为了速度,
function(){
	function(){
		function(){
			function(){
				function(){
					document.getElementById('id tag');
					//这个document将会沿着作用域层层上找,直到最外层。
				}
			}
		}
	}
}

jquery就是为了加快内部查找全局变量的速度,而直接把window以参数的形式传进来
这样window就在jquery内部的AO上

不传undefined是为了安全
因为在IEFirefox低版本中,undefined竟然可以重新赋值,如undefined = 3;
声明undefined局部变量(名字是undefined而已),同时又不传参,值自然
是undefined,防止了外界对undefined的污染。