在变量上调用console.log时显示“未定义”

时间:2019-12-10 05:30:53

标签: javascript

我是JavaScript新手,对于这里发生的事情我找不到明确的答案:

function bike() {
  console.log(this.name);
}

var name = "John";
var obj1 = {
  name: "Sam",
  bike: bike
};
var obj2 = {
  name: "Paul",
  bike: bike
};

bike(); // undefined
obj1.bike(); // Sam
obj2.bike(); // Paul

我不明白为什么它在终端上打印“ undefined”而不是“ John”

2 个答案:

答案 0 :(得分:0)

此行为没有错,

function bike() {
  console.log(this.name);
}

var name = "John";
var obj1 = {
  name: "Sam",
  bike: bike
};
var obj2 = {
  name: "Paul",
  bike: bike
};

bike(); // undefined here it refers to (**this**).name
        //if you run the same in browser console 
        // you will get jhon
        // but in node there is no window object
        // that's y you are getting undefined in node terminal

obj1.bike(); // Sam
obj2.bike(); // Paul

请参考ASDFGerte建议的链接以获取更多信息

答案 1 :(得分:-2)

您只需编写

window.name

window.variableName它用于打印全局变量