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运算符与直接调用的结果等同;