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

Javascript 为什么声明为函数而没有新关键字的变量未定义?,javascript,Javascript,在myFunc中,this关键字指的是非WOBJ的新对象,但在函数之外,变量noNewObj被声明为一个没有new关键字的函数,该关键字不是对象,为什么?noNewObj被指定调用myFunc()的返回值,它是未定义的,因为没有给出明确的返回值 如果试图使用myFunc()作为构造函数,则需要使用new关键字,如下所示: function myFunc(){ this.taste = 'yummi'; console.log(this.taste); console.lo

在myFunc中,
this
关键字指的是非WOBJ的新对象,但在函数之外,变量noNewObj被声明为一个没有new关键字的函数,该关键字不是对象,为什么?

noNewObj
被指定调用
myFunc()
的返回值,它是未定义的,因为没有给出明确的返回值

如果试图使用
myFunc()
作为构造函数,则需要使用
new
关键字,如下所示:

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()
作为构造函数,那么应该以大写字母开头,因为这是一种常见的Javascript约定,用于指示函数是一个要使用
new
调用的函数。不,这是错误的:在myFunc中,this关键字指的是非WOBJ的新对象

如果未使用new关键字,则函数中的“this”变量将引用全局对象


并且没有指定返回值,因此它记录为未定义。

myFunc
不会将/返回anthing放入
noNewObj
, 所以它是未定义的

var noNewObj = new myFunc();

myFunc不会将安婷放在noNewObj中
function myFunc(){
    this.taste = 'yummi';
    console.log(this.taste);
    console.log(typeof this);//logs object
    //return something here
}