繁体   English   中英

为什么没有新关键字声明为函数的变量未定义?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM