函数:由事件驱动或调用时,可重复执行的代码块
意义:减少代码冗余 ,提高了灵活性,可维护性,可扩展性
函数声明
function functionName() { //函数体 具体要执行的代码 console.log("ok");
函数表达式
var functionName = function () { //函数体 具体要执行的代码 }; var bar = function () { alert(20); };
借助构造函数 Function系统内置的一个构造函数(类)
//var functionName = new Function();
事件驱动执行
/* btn.onclick = function () { console.log("ok"); }; */ /* var foo = function () { console.log("ok"); }; btn.onclick = foo; console.log(foo); */
调用执行 函数名()
/* var foo = function () { console.log("ok"); }; function bar() { console.log("ok1"); } foo(); bar(); foo(); */
封装一个九九乘法表函数
<input type="button" value="九九乘法表" id="btn" /> <script> function jjb() { for (var i = 1; i <= 9; i++) { for (var j = 1; j <= i; j++) { document.write(j + "x" + i + "=" + i * j + " "); } document.write("<br>"); } } //btn.onclick = jjb; jjb(); </script>
求某两个数的和
参数:在创建一个函数,放到小括号里的变量,称为形参,在调用一个函数时,放到小括号里的值,称为实参
需要时就给 当函数内部的一些值是可变的,可以考虑使用参数表示
形参和实参 一一对应
如果形参的个数比实参的个数多,多余的形参会得到一个默认值undefined
如果形参的个数比实参的个数少,多余的实参无效
function doAdd(x, y) { var he = x + y; document.write(he); } doAdd(); doAdd(10); //doAdd(121212, 3554353);
js引擎在执行js时
分两步: 1. 先扫描当前环境中的所有的声明,包括变量声明和函数声明,将其提升至对应环境的顶部 2. 执行代码
console.log(a);会输出undefind var a = 10;//
变量声明,只提升变量名,函数声明,整个函数都提升
同名的变量和函数,都提升时,函数的优先级高
例:/* console.log(a); //undefined var a = 10; var a = function () { console.log("ok"); }; console.log(a); //函数体 */
求任意个数的和 //arguments 当形参的个数不确定,有需要取实参的时候 function foo() { /* console.log(arguments); //保存了传给函数的所有的实参的一个集合 console.log(arguments[0]); //第一个实参 1 console.log(arguments[1]); //第二个实参 2 console.log(arguments.length); //实参的个数 */ for (var i = 0; i < arguments.length; i++) { console.log(arguments[i]); } } foo(1, 2, 3, 3, 4, 5);
return 用在函数的内部 1.结束函数执行 2.函数返回值
/* function foo() { console.log("1"); return;//return后面的代码不再执行了 console.log("2"); } foo(); */ /* function doAdd(x, y) { var sum = x + y; //这个函数没有返回值 没有return 或者return后没有值 默认返回undefined } */