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