JS – 函数
函数 数组 默认是按引用传递
var arr = [1, 2, 3]; function f(a) { a[0] = null; } f(arr); // null 2 3 for (var i = 0; i < 3; i++) { document.write(arr[i]); }
var arr = [1, 2, 3]; function f(a) { a = null; } f(arr); // 1 2 3 for (var i = 0; i < 3; i++) { document.write(arr[i]); }
函数 变量是值传递
var a = 3; function f(b) { b = 4; } f(a); document.write(a); // 3
自动执行
(funtion () { var msg = "xxx"; wnidow.onunload = function () { ...do something... } })
arguments
this.f = function () { if (arguments.length == 1) { this.f1(arguments[0]); } else if (arguments.length == 2) { this.f1(arguments[0], arguments[1]); } } this.f1 = function (a) { .... } this.f2 = function (a, b) { .... }
arguments.length; arguments[0], arguments[1], arguments[2] arguments.callee # callee 不会像外层寻找, 自身就是个闭包
alert((function (n) { if (n <= 1) { return 1; } else { return n + arguments.callee(n-1); } })(100));
实现重载
function power(base, exponent) { var result = 1; if (exponent == undefined) { exponent = 2; } for (var i = 1; i <= exponent; i++) { result *= base; } return result; }
匿名函数
(function(a) {alert (a); })(‘abc‘)