1

Есть такой код:

var user = {
  name: 'John',
  speak: function() {
    var sayHi = function() {
      console.log('Hi, my name is', this.name);
    }
    sayHi();
  }
}
user.speak(); // выведет 'Hi, my name is'

Почему в переменной name, которая создастся в глобальной области, будет значение пустой строки, а не undefined?

  • http://joxi.ru/GrqG0M6IQjpPO2 - почему это пустая строка? http://joxi.ru/823vDOeUJkZ1am - все правильно выводит. Вы без строки в консоль попробуйте вывести this.name –  Oct 31 '18 at 13:38

1 Answers1

1

В данном случае this.name === window.name. В свою очереде window.name это имя свойство окна, в котором хранится его текущее имя, и оно определенно по умолчанию. Более подробно можно ознакомиться здесь.

P.S. Если в любом месте скрита сделать console.log(name), undefined также не вернется, если его явно не присвоить.