创建函数的方 法主要有三种:声明式的静态方式(传值和传引用)、动态的匿名方式、函数表达式。
(1)声明式的函数
为常见的方式,用关键字function来声明创建
function functionname(参数1,参数2 泄漏zhi,...,参数n){函数体}
声明式的函数只在页面加载时解析一次,这种方式容易在代码中定位,方便查找阅读和理解,一一般没有内存泄漏之类的负面影响。
function helloWorld(toYou)
{
alert("hello"+toYou);
}
helloWorld("World");
无论调用他多少次,使用的都是上面这个函数对象。
这里特别强调传参数时,传值和传引用的区别,JS中基本数据类型的变量,比如字符串,布尔类型和数值,会以传值的方式传给函数,当函数中改变实参是的数值时,这种改变不会反映到调用函数的程序中。
传引用时,函数中对参数的改变会反映到调用的函数程序中。<script>
function alterArgs(a,b)
{
a="hello";
b[b.length]="three";
var str="Baby";
var ary=new Array("one","two");
alterArgs(str,ary);
document.write("string is"+str+"<br/>");
document.write("Array is"+ary);
}
</script>
<script>
function alterArgs(a,b)
{
a="hello";
b[b.length]="three";
var str="Baby";
var ary=new Array("one","two");
alterArgs(str,ary);
document.write("string is"+str+"<br/>");
document.write("Array is"+ary);
}
</script>
输出结果为:Baby
one two three
声明一个数组实际上是分配了一个地址,然后传到函数里的就是一个地址,然后改变值的时候指向的是同一个地址,,传值的话他们指向的就是不同的地址了吧,所以传值来改变实参的值,调用函数后不会有改变.