JavaScript之函数

    1.函数的概念和创建

    1.1  函数

函数是由事件驱动或者当其被调用时可重复执行的代码块。

增强了代码的灵活性,可扩展性,可维护性,减少代码的冗余。

 1.2  函数的创建方式

函数的创建方式有三种

     1.2.1 函数声明

function functionName() {

            statement

}

    1.2.2  函数表达式

var  functionName = function () {

       statement

|

   1.2.3  构造函数

var  functionName  =  new Function();

    2. 函数的执行

   2.1 事件驱动

   2.2 调用函数           函数名 ()

<input type="button" name="btn" id="btn" value="测试" />
		<script type="text/javascript">
			function foo(){
				document.write("hello world");
			}
			
			//btn.onclick = foo;//函数名也成为指针   事件驱动    
			

			//函数调用  函数名()
			//foo();


		</script>

    3. 参数           (分为形参和实参)

定义函数时,在小括号里写的变量——形参

调用函数时,在小括号里写的变量或者值 ——实参

形参和实参的个数应保持一致,如果形参个数多于实参,多于的形参会取undefined;如果实参个数比形参多,多余的实参无用。

   4. JavaScript预编译分析

脚本执行js分为两个阶段:预编译和代码的执行。

JS并不会完全按照代码顺序进行解析执行,而是在解析之前进行一次“预编译”。在此过程中,会把:

  • (1)定义式的函数优先执行
  • (2)所有var变量定义,默认值为undefined

编译阶段会对所有的var变量和function进行扫描,并将var变量初始化为undefined类型,而function则被初始化为函数值。到了执行阶段,JS从上面往下面依顺序执行,遇到var变量便进行赋值(因此,在赋值之前进行调用的话会出现错误).遇到函数变量的话会从活动对象中寻找函数。

变量声明 :var

函数声明 :function

注意:预编译阶段发生变量声明和函数声明,没有初始化行为(赋值),匿名函数不参与预编译只有在解释执行阶段才会进行变量初始化。

5. arguments 和return 关键字

arguments  :用在函数内部,表示传给该函数的所有实参的集合。

function foo(){
	var sum = 0;
	console.log(arguments);//伪数组或者类数组对象
	//arguments[0]取到第一个实参值,arguments[arguments.length-1]取到最后一个实参值
	//console.log(arguments[0],arguments[1])
	//var sum = arguments[0]+arguments[1]+arguments[2]+arguments[3];
				
	for(var i = 0; i < arguments.length; i++){
			sum += arguments[i]
		}
			document.write(sum);
		}
			
		foo(1,2,3,4,5,55);
			
			
		/*function bar(){
			//表示的函数自身   在代码压缩时
			//console.log(arguments.callee);
		}
			
		bar();*/

return  :(1)返回函数运行结果  (2) 终止函数执行

如果一个函数没有return或者return后面没有跟具体的值,默认返回undefined。

//这个函数的功能是在页面中打印aaa
			//这个函数运行的结果为bbb
			function foo(){
				document.write("aaa");
				return "bbb"; 
			}


 

猜你喜欢

转载自blog.csdn.net/weixin_42217154/article/details/81216625