javascript函数的调用 常规调用和用new调用

javascript函数的返回值

  • 函数在没有明确返回值的情况下,全部都返回undefined
  • 当函数有明确的返回值时:
    • 如果函数返回值为常规意义上的值类型(Number、boolean、String)时, 通过new运算符将会返回一个该函数的实例对象;
    • 如果函数返回一个引用类型(Object、Array、Function)时,则通过new运算符与直接调用函数产生的结果等同;

函数的返回值类型是值类型(Number、boolean、String):

1 function person(){
2    var name = 'tom';
3    return 'jack';
4 }
5 
6 var p = new person();    //person {}  函数的返回值是值类型,则通过new运算符返回的将是一个该函数的一个实例对象;
7 
8 person();            //'jack'   直接调用,返回return的值

同理将声明变量的方式由var改成this,如下:

1 function person(){
2   this.name = 'tom';
3   return 'jack';
4 }
5 
6 var p = new person();         //p  person{name:'jack'}  同理
7 person();                     //"jack"                    

返回值得类型是引用类型(Object、Array、Function):

 1 function person(){
 2   this.name = 'tom';
 3   return {name:'jack'};
 4 }
 5 
 6 var p = new person();   //p Object{name:'jack'};
 7 p.name;             //'jack'
 8 person();            //Object{name:'jack'}
 9 
10 //由此可见,当函数的返回值类型是引用类型时,通过new运算符与直接调用的结果等同;
原文地址:https://www.cnblogs.com/sxshijingjing/p/4832322.html