理解函数
文字居多,各位看官不要厌烦呀~~
在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属性
(严格模式下不可用),如果该函数是一个匿名函数,则你只能使用后者。