alert与console.log 差不多 只是会有弹出框
1.命名函数表达式
var test = function abc(){};
2.匿名函数表达式(常用的)–函数表达式。
var demo = function(){};
例子:
function test(a,b){}
a ,b 前面不需要加var。
test(1,2,3);(传入的实参可以与形参不同个数)
function test(a,b){
//arguments --[1,2,3]-实参列表,相当于一个数组。
//test.length 形参个数. arguments.length实参个数
};
!!!arguments数组和形参会一起变但不是同一个变量。
此函数中修改arguments[0] 与 a一起变化但不是同一个变量。
var str = ‘123’;
**str.charAt(0)**就为字符串的第一位。
str[0]也行,但不规范。
逆转str只需要定义一个空的字符串。
var demo = " ";
再利用循环逆向相加。
demo += str[ i];
**
立即执行函数
**
(function (形参1,形参2,形参3){代码;
return ;}(实参1,实参2,实参3))
执行完就被释放,其余和函数一样。
-function (){
console.log('a');
}();
在函数之前加- + ! 都可以执行。
var f=(
function f( ) {
return "1";
},
function g( ) {
return 2;
}
)();
console.log(typeof(f));
最后那个函数执行,所以打印number。
arguments
arguments.callee
var num = (function(n){
if(n==1){
return 1;
}
return n * arguments.callee(n-1);
}(100))
立即执行函数没有名字,当使用其进行阶乘运算时,可用arguments.callee代替其名字(arguments.callee就等于此函数)。
func.caller
function test(){
demo();
}
function demo(){
console.log(demo.caller);
}
test();
caller返回调用当前函数的函数。如果当前函数不是在函数内被调用,而是在JavaScript顶层作用域被调用,则返回null。
