函数· 函数function:函数是一个复杂数据类型。 我们可以把函数看作是一个容器,在函数中可以存放很多的代码, 把代码存放到函数中,将来如果想使用这个代码我们就只需要找到这个函数即可 函数的主要作用:可以减少代码量 什么时候需要把一段代码放到函数中:当你发现在程序中多个地方都需要使用这个逻辑,就把这个逻辑放到函数中就可以. 封装的概念:把一段代码装到一个容器中就叫做封装 封装函数:把一段代码装到一个函数中,就叫做封装函数(函数就是一个容器) 函数的书写形式: 声明式函数: 赋值式函数: 函数书写形式 创造函数: 1)声明式函数:function 函数名字(){代码} 函数名字可以随便书写,只要符合命名规则即可 2)赋值式函数:也可以叫做函数表达式或者匿名函数 语法:var 变量名 = function(){} 调用函数:函数名() 调用之后代码才会执行 注意:函数不调用不执行 声明式和赋值式的区别 声明式函数:在调用的时候,写在创造函数的前面和后面都可以 赋值式函数:在调用的时候,必须写在创造之后,如果在创造函数的前面调用会报错 为什么会报错:原理预解析再研究 调用函数: 函数名字() 函数的参数 参数: 形参:在创造函数的时候()中书写的变量,参数之间逗号隔开 实参:在调用的时候()中写的数据 实参是用来给形参进行赋值 注意点: 如果实参比形参少,有些形参未赋值,结果就是undefined 如果实参比形参多,多余的实参其实是无效数据 一般建议:形参和实参的个数最好一致 函数的意义 参数的意义:为了使函数变得更加灵活,让函数的功能适用范围更广 返回值 经过分析:不应该把求完和之后的结果的打印方式写在函数内部 将来调用者想怎么处理这个和,那是调用者的事情,不应由创造函数的人去完成 所以:要想办法把求和的结果给到调用者 要想把函数内部的一个数据给调用者:可以借助于返回值去书写 语法:return 你要返出的数据 预解析 预解析:变量的提升和函数的提升 js是一门解释型的语言,会先对代码进行通读解释,然后才会放到浏览器中执行。 只要碰到了var声明的变量和声明式函数就会进行预解析. 预解析:先定义出来,但是并不进行赋值 记住:js代码的执行机制:先进行预解析,然后才执行代码 var变量的预解析:只要碰到了var,先告诉浏览器我这里需要创造一个变量,但是暂时先不赋值,只有到运行阶段才进行赋值 总结 1.循环的嵌套: 只要发现了需要重复执行的代码,就只需要把整体再扔到一个循环中即可 一般如果是双循环:外层循环控制行,内层循环控制一行有多少个(列) 打印九九乘法表: for(var i = 1;i document.write(i+'*'+j+'='+(i*j)) } document.write('') } 2.函数 函数是一个复杂数据类型,单词是function 1) 如何去创造函数: 方式一:声明式函数 function 函数名字(){} 方式二:赋值式函数,也叫做函数表达式或者匿名函数 var 名字 = function(){} 要想让函数执行必须调用函数: 调用语法:名字() 不管式声明式还是赋值式调用语法都是一样的 区别:声明式函数可以在创造前调用,但是赋值式函数不能再创造前调用,会报错 2) 函数的参数问题 形参:在创造函数的时候()中书写的变量,参数之间逗号隔开 实参:在调用的时候()中写的数据 实参是用来给形参进行赋值 注意点: 如果实参比形参少,有些形参未赋值,结果就是undefined 如果实参比形参多,多余的实参其实是无效数据 一般建议:形参和实参的个数最好一致 3) 返回值的问题 语法:return 你要返回的数据 以后写函数3给思考:(重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点) 思考一:函数的功能是什么 思考二:函数中是否需要写参数 只要函数中有未知数据,就写参数 思考三:函数中是否需要写返回值 当调用者想使用函数内部的数据,就在函数内部把数据return出去即 3.预解析: js程序的运行机制: 先预解析,再执行代码 只有var创造的变量和声明式函数才会进行预解析. 预解析变量\预解析函数:先提前创造好变量,并不赋值或者函数,在执行的时候再赋值赋值操作 声明式函数提前调用不报错,赋值式函数提前调用会报错是为什么? 因为声明式函数会进行预解析,在预解析阶段就已经把函数造好了,在执行阶段无论书写在哪里都可以调用函数, 赋值式函数,其实走的是变量的预解析,在预解析阶段,只需创造一个变量,并没有进行赋值,所以预解析结束之后这个变量还不是一个函数呢 提前调用必然会报错.
|