JS函数
- 函数也是一个对象
- 函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码)
- 函数中可以保存一些代码在需要的时候调用
- 使用typeof检查一个函数对象时,会返回function
- 封装到函数中的代码不会立即执行,会在调用的时候执行
1、创建函数
-
使用函数声明来创建一个函数
-
语法:
-
function 函数名([形参1,形参2…形参N]){
语句…
} */
-
function fun2(){
console.log("这是我的第二个函数~~~");
alert("哈哈哈哈哈");
document.write("~~~~(>_<)~~~~");
}
console.log(fun2);
//调用fun2
fun2();
-
使用函数表达式来创建一个函数
-
语法:
-
var 函数名 = function([形参1,形参2…形参N]){
语句…
}
-
-
其中
function([形参1,形参2...形参N]){ 语句...}叫做匿名函数
// 匿名函数,但这样是不能用的
function(){
console.log("我是匿名函数中封装的代码");
}
//所以可以用一个变量来保存匿名函数,可以这样写
var fun3 = function(){
console.log("我是匿名函数中封装的代码");
}
//调用fun3
fun3();
2、函数的参数(略)
-
形参
-
实参
- 实参可以是任意的数据类型,也可以是一个对象,一个函数(可以将函数的返回值作为参数再做实参)
function sayHello(o){
console.log("我是"+o.name+",今年我"+o.age+"岁了,"+"我是一个"+o.gender+"人,"+"我住在"+o.address);
};
var obj = {
name: "孙悟空";
age: 18;
gender: "男",
address: "花果山"
};
sayHello(obj);
3、函数的返回值(略)
-
返回值可以是任意的数据类型
- 可以是对象
- 可以是对象的属性
- 可以是函数,再函数内部再声明一个函数
function fun4() {
//在函数内部再声明一个函数
function fun5(){
console.log("我是fun5")
}
//将fun5函数对象作为返回值返回
return fun5;
}
a = fun4;
console.log(a); //输出是function fun5(){console.log("我是fun5")};
----------------------------------------------------------------
function fun4() {
//在函数内部再声明一个函数
function fun5(){
console.log("我是fun5")
}
//将fun5()的调用结果返回;如果有返回值的话就是返回fun5的返回值了
return fun5();
}
a = fun4;
// console.log(a); //是在控制台输出"我是fun5"
a(); // 相当于是调用了fun5
fun4()(); // 相当于是调用了fun5
4、立即执行函数
- 函数定义完,立即被调用,这种函数叫做立即执行函数
- 立即执行函数只会执行一次
<script type="text/javascript">
// 函数对象()
(function(){
alert("我是一个匿名函数~~~");
})();
(function(a,b){
console.log("a = "+a);
console.log("b = "+b);
})(123,456);
</script>
5、对象中的方法
- 函数也可以称为对象的属性,如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法
- 调用这个函数就说调用对象的方法(method)
- 但是它只是名称上的区别没有其他的区别
<script type="text/javascript">
/*
* 创建一个对象
*/
var obj = new Object();
//向对象中添加属性
obj.name = "孙悟空";
obj.age = 18;
//对象的属性值可以是任何的数据类型,也可以是个函数
obj.sayName = function(){
console.log(obj.name);
};
--------------------------
function fun(){
console.log(obj.name);
};
//调方法
obj.sayName();
--------------------------
//调函数
fun();
===============================================================
var obj2 = {
name:"猪八戒",
age:18,
sayName:function(){
console.log(obj2.name);
}
};
obj2.sayName();
</script>