Javascript教程(四)——函数

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>

猜你喜欢

转载自blog.csdn.net/qq_32755875/article/details/110555923