javascript的基本语法:函数

1. 函数的分类
1.按参数个数划分:有参函数无参函数
2. 按返回值划分:有返回值函数无返回值函数
3.按编写函数的对象划分:自定义函数和系统函数
4. 立即执行函数举例如下:

<script type="text/javascript">
(function(a,b)
{
	document.write("a="+a+"<br/>");
	document.write("b="+b);
})(123,456);
</script>
**输出结果如下**

效果图
5.this函数
总结:1.当以函数形式调用时,this就是window
2.当以方法形式调用时,谁调用方法this就是谁
3.当以构造函数调用时,this就是新调用的那个对象

	var name="全局的";
	function fun()
	{
		document.write(this.name);
	}
	var obj1=
	{
		name:"杨洋",
		sayName:fun
		
	}
	var obj2=
	{
		name:"李易峰",
		sayName:fun
		
	}
	var obj3=
	{
		name:"易烊千玺",
		sayName:fun	
	}
	fun();//调用它输出全局的
	obj1.sayName();//调用它输出杨洋
	obj3.sayName();//调用它输出易烊千玺,自己尝试一下去除this后是什么效果

2.函数的建立调用

//  建立
function 函数名([参数1,参数2])//使用[]括起来的是可选部分
{
  函数体
}
//调用
函数名();

3.参数说明
实参可以是任何类型,也可以是对象
实参是对象的例子

<script type="text/javascript">
function test(o)
{
	alert("我叫"+o.name+"我今年"+o.age);
	
}
var obj={
	name:"杨洋",
	age:18
	
}
test(obj);
</script>

单向值传递,只能由实参传递给形参,不能由形参传递给实参
形参在未调用时不占内存单元,在调用时占内存单元,调用结束后内存单元 自动释放
实参的个数要和形参个数一致,如果实参个数大于形参个数则多余的部分将忽略,如果实参个数小于形参个数则少的部分为undefined举例如下:

<script type="text/javascript">
function test(a,b)
{
	alert("a="+a+","+"b="+b);
	
}
test(10);

效果图

<script type="text/javascript">
function test(a,b)
{
	alert("a="+a+","+"b="+b);
	
}
test(10,20,30);
</script>

效果图
4.函数的调用方式
1.简单的函数调用

<script type="text/javascript">
function add(a,b)
{
	var sum=a+b;
	alert("两数相加和为sum="+sum);
}
add(10,20);
</script>

2.在表达式中调用

<script type="text/javascript">
function isyear(a)
{
	if((a%100!=0 && a%4==0) || (a%400==0))
	  {
		  return a+"是闰年";
	  }
	  else
	  {
	  return a+"不是闰年";
	  }	
}
  document.write(isyear(2018));//在表达式中讲结果输出
</script>

3.在事件响应中调用函数
再点击时调用函数

<p>i=10,j=10;i+j=?</p>
<button onClick="add()">提交</button>
<p id="myid"></p>
<script type="text/javascript">
function add()
{
	var i=10,j=10;
	var sum=i+j;
document.getElementById("myid").innerHTML=sum;	
}
</script>

4.在链接时调用

<a href="javascript:test();">学习JavaScript的好书籍</a>
<script type="text/javascript">
function test()
{
	alert("javascrit从入门到精通");
	}
</script>

5.什么是调用方法,举例如下

<script type="text/javascript">
	var obj=new Object();
	obj.name="杨洋";
	obj.age=18;
	obj.sayName=function()//属性值是函数(方法)
	{
		document.write(obj.name);//输出结果是杨洋
	}
	obj.sayName();//称为调方法
</script>

6.构造函数
说明:(1)构造函数和普通的函数基本一样,不一样的是普通函数直接调用,构造函数使用new关键字来调用
(2)使用同一个构造函数创建的对象,我们称之为一类对象,也将一个构造函数称为一个类(在下面的实例中,per,per2,per3都是person类的对象,dog是Dog类的对象)
(3)使用instanceof可以检查一个对象是否是此类的对象如果是返回true,否则返回false
1. 构造函数的执行流程
(1)立刻创建一个新的对象
(2)将新建的对象设置为函数中的this,在构造函数中可以使用this来引用新建的对象
(3)逐行执行函数中的代码
(4)将新建的对象作为返回值返回

<script type="text/javascript">
	function person(name,age,gender)
	{
		this.name=name;//相当于对象.name=name(对象为per,per2,per3)
		this.age=age;
		this.gender=gender;
		this.sayName=function()
		{
			alert(this.name);
		};
	}
	function Dog()
	{
	}
	var per=new person("王源",18,"男");
	var per2=new person("王俊凯",20,"男");
	var per3=new person("易烊千玺",20,"男");
	var dog=new Dog();
	console.log(dog);
	console.log(per);
	console.log(per2);
	console.log(per instanceof person);//instanceof是用来检查一个对象是否是一个类的实例,如果是返回true,否则返回false
</script>

效果图
7.原型对象

<script type="text/javascript">
	function person(name,age,gender)
	{
		this.name=name;
		this.age=age;
		this.gender=gender;
		
	}
	person.prototype.sayname=function()//向原型中添加sayname方法
	{
		alert("大家好,我是"+this.name);
	}
	var per=new person("王源",18,"男");
	var per2=new person("王俊凯",20,"男");
	var per3=new person("易烊千玺",20,"男");
	per.sayname();//输出王源
	per2.sayname();//输出王俊凯
</script>

8.垃圾回收
当一个对象没有任何的变量或者属性对他进行引用,此时我们将永远无法操作该对象,我们将此类对象称之为垃圾。在JS中拥有自动的垃圾回收机制,会自动的将垃圾从内存中销毁,我们只需要将不再使用的对象设置为null即可

var obj=new Object();
	obj=null;

猜你喜欢

转载自blog.csdn.net/dweblover/article/details/83932865