JS 函数基础
函数简介
函数
函数也是一个对象
函数中可以封装一些功能(代码),在需要时可以指向这些功能(代码)
函数中可以保存一些代码在需要时调用
使用typeof检查一个函数对象时,会返回function
创建一个函数对象,我们在开发中很少使用构造函数来创建一个函数对象
可以将要分装代码以字符串的形式传递给构造函数
封装到函数中的代码不会立刻执行函数中的代码会在调用时执行
调用函数语法:函数对象()
当调用时,函数中封装的代码会按照顺序执行
函数对象具有所有普通对象的功能但是比普通对象更加强大
var fun = new Function("console.log('这是我第一个函数');");
fun.hello = "你好";
console.log(fun.hello)
fun();
使用 函数声明来创建一个函数
语法:
function 函数名([形参1,形参2,形参3....形参n]){
语句...
}
function fun2(){ console.log("这是我的第二个代码") } console.log(fun2) fun2()
使用一个函数表达式来创建一个函数
语法
var 函数名 = function(){
语句...
}
var fun3 = function(){ console.log("这是我的第二个代码") }; fun3()
函数的参数
定义一个用来求两个数的和的函数
可以在函数的()中指定一个或者多个形参(形式参数)
多个形参之间使用,号隔开声名形参就行相当于在函数内部声名了对应的变量
但是并不赋值,在调用函数时可以在()中指定实参(实际参数),实参将会赋值给函数中的对应的形参
调用函数时解析器不会检查实参的类型,也不会检查实参的数量如果实参的是数量少于形参的数量,则没有对应的形参将是undefined
function fun4(a,b){ console.log(a+b); } fun4(5,5) fun4(5,"吃了没") fun4(5,true) fun4(0,0,6666)
函数的返回值
创建一个函数,用来计算三个数的和,可以使用return来设置函数的返回值 语法:
return 值;
return后的值可以作为函数执行结果返回,return后的语句全部都不会执行
我们可以定义一个变量,来接收该结果
如果return后不跟任何值就会返回undefined
function sum(a,b,c){ d = a + b + c; return d; alert(555); } var result = sum(1,2,3); console.log(result)
实参可以使任何值
定义一个函数,判断数字是否是偶数,如果是就返回true,否则就返回false
function oushu(a){ return a%2 == 0; } console.log(oushu(9));
定义一个函数,可以根据半径计算一个圆的面积,并返回计算结果
3.14*r*r
function mj(r){ return 3.14*r*r; } console.log(mj(10));
创建一个函数,可以在控制台中输出一个人的信息
可以输出的name age gender address
实参可以使任意数据类型也可以是一个对象
实参可以是任意的数据类型,也可以是一个对象
当我们参数过多时,可以将参数封装到一个对象中,然后通过对象传递
function xinxi(o){ console.log("我是"+o.name+"今年我"+o.age+"我是一个"+o.gender+"人"+"我住在"+o.address) } var sun = {} sun.name="悟空"; sun.age=18; sun.gender="男"; sun.address="花果山"; var obj = { name:"孙悟空", age:18, gender:"男", address:"花果山" } xinxi(sun)
实参可以是一个对象,也可以是一个函数
function sayhello(o){ console.log("我是"+o.name+"今年我"+o.age+"我是一个"+o.gender+"人"+"我住在"+o.address) console.log(555) } var obj = { name:"孙悟空", age:18, gender:"男", address:"花果山" } sayhello(obj) function fun(a){ console.log("a= "+a) a(obj) } fun(sayhello)
另一种写法同上
function fun(a){ console.log("a= "+a) } fun(function(){alert(5555)}); fun(function(){alert(5555)}());
函数返回值
mj()
调用函数
相当于使用函数的返回值
mj
是函数对象
相当于使用的函数对象
function mj(r){ return 3.14*r*r; } // console.log(mj(10)); function fun(a){ console.log("a= "+a) } fun(mj(10));
break,continue,return 在函数和for中之间的关系
function fun() { console.log("开始") for (var i=0; i<=5; i++) { if (i==2) { 使用break;可以退出当前循环 break; 使用continue;可以跳过当次循环 continue; 使用return;可以结束整个函数循环 return; } console.log(i) } console.log("结束") } fun()
返回值可以是任意的数据类型
也可以是个对象
function fun1(){ var a={ name:"张三" }; return a; } console.log(fun1())
也可以是函数
function fun(){ function fun2(){ console.log(5555) } return fun2; } console.log(fun()) fun()()
立即执行函数
立刻执行函数语法
(function(a) { console.log(a); })(99)
方法
创建一个对象,向对象中添加属性属性可以任何数据类型,对象属性也可以是一个函数
函数也可以成为对象的属性 当函数变成对象的属性之后还有另一个名字
如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法,调用函数就是调用对象的方法(method)但是只是名称上面的区别
var a={ name:"张三", hanshu:function obj(){console.log(888);} }; a.hanshu1 = function obj(){console.log(999);}; console.log(a.hanshu) a.hanshu1()