理解函数
文字居多,各位看官不要厌烦呀~~
在JavaScript中,每个函数其实都是一个Function对象。(不是有句话说:一切皆对象?)
-
函数总是会返回一个值,但是一个过程有可能返回一个值,也有可能不返回。(所以函数不是过程~)
如果一个函数中没有使用return语句,则它默认返回undefined。要想返回一个特定的值,则函数必须使用 return 语句来指定一个所要返回的值。(使用new关键字调用一个构造函数除外)。
-
调用函数时,传递给函数的值被称为函数的实参(值传递),对应位置的函数参数名叫作形参。
如果实参是一个包含原始值(数字,字符串,布尔值)的变量,则就算函数在内部改变了对应形参的值,返回后,该实参变量的值也不会改变。
如果实参是一个对象引用,则对应形参会和该实参指向同一个对象。假如函数在内部改变了对应形参的值,返回后,实参指向的对象的值也会改变。
终于有代码了,撒花~~
/* 定义函数 myFunc */ function myFunc(theObject) { //实参 mycar 和形参 theObject 指向同一个对象. theObject.brand = "Toyota"; } /* * 定义变量 mycar; * 创建并初始化一个对象; * 将对象的引用赋值给变量 mycar */ var mycar = { brand: "Honda", model: "Accord", year: 1998 }; /* 弹出 'Honda' */ window.alert(mycar.brand); /* 将对象引用传给函数 */ myFunc(mycar); /* * 弹出 'Toyota',对象的属性已被修改. */ console.log(mycar.brand);
(关于函数中的this,顺便说点)
在函数执行时,this 关键字并不会指向正在运行的函数本身,而是指向调用该函数的对象。
所以,如果你想在函数内部获取函数自身的引用,只能使用函数名或者使用arguments.callee属性(严格模式下不可用),如果该函数是一个匿名函数,则你只能使用后者。