[英]why variable declared to function without new keyword is undefined?
function myFunc(){
this.taste = 'yummi';
console.log(this.taste);
console.log(typeof this);//logs object
}
var noNewObj = myFunc();
console.log(typeof noNewObj);//logs undefined
在myFunc中, this
关键字引用的是noNewObj的新对象,但是在函数外部,变量noNewObj声明为没有new关键字的函数,而该对象不是对象,为什么?
noNewObj
分配了调用myFunc()
的返回值 ,该值undefined
因为未提供任何明确的返回值。
如果试图将myFunc()
用作构造函数,则需要使用new
关键字,如下所示:
var noNewObj = new myFunc();
另外,如果确实要使用myFunc()
作为构造函数,则应以大写字母开头,因为这是一种常见的Javascript约定,表示函数必须通过new
调用。
不,这是错误的:在myFunc中,此关键字引用的是noNewObj的新对象
如果未使用new关键字,则函数内的'this'变量将引用全局对象。
而且没有分配返回值,因此它记录为未定义。
myFunc
不会在noNewObj
放入/返回noNewObj
,因此它是未定义的
function myFunc(){
this.taste = 'yummi';
console.log(this.taste);
console.log(typeof this);//logs object
//return something here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.