11 函数

函数
	函数是什么
		function abs(x) {
		}
		function声明一个函数;
			abs	函数名
			(x)	参数列表,多个参数以,分隔;
			{ ... }	  函数体
		
		函数也是对象	
		由于JavaScript允许传入任意个参数(多传参数或少传参数)而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数
结束函数
		有return://遇到return,执行return语句,返回结果,默认返回
		无return:遇到大括号,默认返回return undefined

参数
	函数的形参:只要写变量名就可以,不用写var
	
arguments
		关键字arguments,它只在函数内部起作用,是一个类数组,内容是实参[a,b,c,1,2,3]。
		函数的length就是形参的个数
			function foo(x) {
				console.log('x = ' + x); // 10
				for (var i=0; i<arguments.length; i++) {
					console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
				}
			}
			foo(10, 20, 30);		
			// foo(a[, b], c)// 接收2~3个参数,b是可选参数,如果只传2个参数,b默认为null:
rest参数
	为什么:
		是为了获得定义参数之外传入的参数
	背景:
		为了获取除了已定义参数a、b之外的参数,我们不得不用arguments,并且循环要从索引2开始以便排除前两个参数,这种写法很别扭,只是为了获得额外的rest参数
        怎么使用rest参数:			
			rest参数只能写在最后,前面用...标识
			function foo(a, b, ...rest) {
				console.log('a = ' + a);}				
		
		变量作用域与解构赋值
			内部函数可以访问外部函数定义的变量
			这说明JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。

  

原文地址:https://www.cnblogs.com/xuanjian-91/p/10259853.html