js学习要点4函数,变量,传值

  • Comments Off on js学习要点4函数,变量,传值
  • A+

js学习要点4函数,变量,传值

JavaScript函数初步

函数的概念

函数,是将一段公共的代码进行封装,给它起个名字叫“函数”。

函数可以一次定义,多次调用。函数,可以将常用的功能代码,进行封装。

如:用户名的验证、验证码函数、邮箱验证、手机号码验证

function max(a,b){
if(a>b){
document.write(a+"比较大<br/>");
}else{
document.write(b+"比较大<br/>");
}
}
max(10,50);
max(0,100);
max(-1,2);
max(100,100);

输出:
50比较大
100比较大
2比较大
100比较大


函数的定义格式

function functionName([参数1][,参数2][,参数N]){
    函数的功能代码;
    [return 参数r]
}

函数定义格式的说明

function关键字是必须的,全小写

functionName:函数的名称。函数名的命名规则与变量命名一样。

():是定义函数时接收数据的参数。参数可有可无,多个参数之间用逗号隔开

形参(形式参数):定义函数时的参数就是“形参”。主要用来接收调用函数者传过来的数据。

形参的名称,与变量的命名规则一样。

形参不能用“var”关键字定义

参数只能存在于函数中

参数不需要声明,直接使用

实参(实际参数):调用函数时的参数称为“实参”。实参就是真正的数据

{}是函数的功能

return语句,用于向函数调用者返回一个值,并立即结束函数的运行。

return用于中止函数的运行

break用于中止各种循环


函数的调用

函数定义是不会执行的,那么,函数必须调用,才会有效果

函数的调用:直接写函数名后跟小括号(),如果有参数则写参数。小括号不能省略。


函数的参数

形参的个数,要与实参的个数一致;

形参的顺序,要与实参的顺序一致。

//定义函数
function information(name,age){
document.write("大家好,我叫"+name+",今年"+age+"岁<br/>")
}
information("张三",24);
information("李四",30);
information("涛哥",20);

输出:

大家好,我叫张三,今年24岁

大家好,我叫李四,今年30岁

大家好,我叫涛哥,今年20岁

JavaScript全局变量和局部变量

全局变量:

可以在网页的任何地方(函数内部和函数外部)使用的变量,就是“全局变量”。

在函数外部定义的变量,就是“全局变量”。

全局变量”既可以在函数外使用,也可以在函数内部使用。

“全局变量”在网页关闭时,自动消失(释放空间)。

局部变量:

只能在函数内部使用的变量,称为“局部变量”。

“局部变量”在函数内部定义,在函数内部使用。

“局部变量”在函数外部无法访问。

“局部变量”在函数执完完毕就消失了。


var name = "小明";//定义全局变量,在information外;
function information(){
var age = 24;//定义局部变量,在information内;
document.write("大家好,我叫"+name+",今年"+age+"岁<br/>");
}
information();//调用函数,输出:大家好,我叫小明,今年24岁

var name = "小明";//定义全局变量;
function information(){
var age = 24;//定义局部变量,在information内;
document.write("大家好,我叫"+name+",今年"+age+"岁<br/>");
}
information();//调用函数,输出:大家好,我叫小明,今年24岁
document.write("大家好,我叫"+name+",今年"+age+"岁<br/>");//这行代码会报错,说age不存在
//因为age变量是局部变量,函数执行完毕,局部变量就消失了

JavaScript中的拷贝传值和引用传值

拷贝传值:基本数据类型都是“拷贝传值”。

拷贝传值,就是将一个变量的值“拷贝”一份,传给了另一个变量。

拷贝传值完之后,两个变量之间没有任何联系,修改其中一个变量的值,另一个不会改变。

这两个变量之间,是相互独立的,没有任何联系。

var a=10;
var b=a;
a++;
document.write("a的值为:"+a+"<br/>");//a的值为:11
document.write("b的值为:"+b);//b的值为:10

引用传址:复合数据类型都是“引用传地址”

引用传址:将一个变量的数据地址,“拷贝”一份,传给另了另一个变量。这两个变量,指向“同一个地址”。

大家共享同一份数据。

如果其中一个变量的值发生了改变,那么,另一个变量的值也得变。要变一起变。

因此,这两个变量是有联系的,要变大家一起变。

var arr1=[10,20,30,40];
var arr2=arr1;
arr1[1]=100;
document.write("arr1[1]的值为:"+arr1[1]+"<br/>");//arr1[1]的值为:100
document.write("arr2[1]的值为:"+arr2[1]);//arr2[1]的值为:100

JavaScript中的匿名函数

即没有名字的函数。

匿名函数,不能单独定义的,也不能单独调用。

匿名函数,一般是作为数据给其它变量赋值的。可以给普通变量、数组元素、对象的属性赋值。

var a=88 ;//将数值赋值给变量a,此时变量a就是“数值型”变量
var a="asd"; //将字符串赋值给a,此时变量a就是“字符型”变量
var a=true; //将布尔值赋值给变量a,此时变量a就是“布尔型”变量
var a=[10,20];//将数组赋值给变量a,此时变量a就是“数组型”变量

var a=function(name,age){//将函数值赋值给变量a,此时变量a就是“函数型”变量
window.alert("我叫"+name+"今年"+age+"岁");
}
//调用函数
a("小明",20);
var b=a;//将变量a的地址,拷贝一份传给变量b
b("小白",22);