JS进阶--深入函数

函数调用

1.作为普通函数调用
function hello() {
    console.log("hello,world");
}

hello();
2.匿名函数调用
var world = function() {
    console.log("匿名函数调用");
}

-+~function() {
  	console.log("匿名函数调用");
}();
3.阶乘
function fact(num) {
   	var result = 1;
    if(num <= 1) {
         return result;
     } else {
        for(var i = 1; i <= num; i++) {
            result = result * i;
         }

         return result;
     }
 }
4.递归调用
function factorial(num) {
	if(num <= 1) {
         return 1;
    }
	return num * factorial(num - 1);
 }

 console.log(factorial(5));
5.对象方法调用
var obj = {
     name: "xiaoming",
     sayhi: function() {
        console.log("hello");
    },
    0: function() {
        console.log("zero");
    },
     "0abc": function() {
       console.log("0abc");
   }
 }

obj.sayhi();
obj[0]();
obj["0abc"]();

var prop = "0abc";
obj[prop]();
6.构造函数调用
function test() {
     console.log("测试");
 }

 var result1 = test(); //普通函数的调用

 var result2 = new test(); //构造函数的调用方式

 console.log(result1);

 console.log(result2);

 var dd = new Date();

 console.log(dd.getFullYear());

 var arr = new Array();

 arr[1] = 10;

 console.log(arr);
7.间接调用
function add(m , n) {
     return m + n;
}

var result1 = add(1,2);

//全局间接调用
var result2 = add.call(window,2,3);
var result3 = add.apply(window,[4,5]);

console.log(result1);
console.log(result2);
console.log(result3);

//局部间接调用
var name = "xiaoming";

var person = {
    name : "xiaohong";
   	print : function() {
        console.log(this.name);
    }
 }
person.print();

persom.print.call(person);

persom.print.apply(person);
8.函数参数
function hello() {
    console.log("hello,world");
}

hello();

function add(m,n) {
    console.log(arguments);
    console.log(arguments[0]);
    console.log(arguments[1]);
    console.log(arguments[2]);

    if(arguments.length != add.length) {
        console.log("参数个数不一致");
        return;
    }

     console.log(arguments.callee === add);//callee属性返回对应的原函数
     return m + n; 
}

 var result1 = add(1,2);
 console.log(result1);

 var result2 = add(1,"2");//传入参数,但并不校验!
 console.log(result2);


 //递归

 function factorial(num) {
     if(num <= 1) {
        return 1;
     }
     return num * arguments.callee(num - 1);
 }

 console.log(factorial(5));

//函数返回值

// return 语句 1.返回值 2.终止函数执行

function add(m,n) {
    if (arguments.length != arguments.callee.length) {
        return; //终止函数执行
    }

    return m + n; //返回语句返回函数值
}

console.log(add(1,2));

var h = -function() {}();//匿名函数
console.log(h);

var person = {
    eat: function() {
        console.log("吃饭");
        return this;
    },
    run: function() {
        console.log("跑步");
        return this;
    },
    study: function() {
        console.log("学习");
        return this;
    }
}

var a = person.eat();

//链式编程
person.eat().run().study();

console.log(a === person);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值