Я случайно столкнулся с этим, когда демонстрировал область видимости переменных в этой реплике. Возьмите этот код, например:
var myFunc = function() {
var name = 'Matt';
var functionScopedVariable = "I'm in the function"
console.log(name); // => 'Matt'
console.log(functionScopedVariable); // => "I'm in the function"
}
myFunc();
console.log(name) // => ''
console.log(typeof name) // => string
console.log(functionScopedVariable) // => ReferenceError: functionScopedVariable is not defined
Я подумал, что это может быть какое-то странное пространство имен с repl, однако перейдите на любой веб-сайт, откройте консоль и введите name
, и он выведет ""
вместо ReferenceError: name is not defined
. Что здесь происходит? Ничего не ломает, просто супер любопытно. Я немного погуглил, но ничего не нашел по этой теме.
window
имеет свойствоname
- это не стандартное значение javascript как таковое (например, nodejs не имеет глобального свойстваname
), это связано с HTML/DOM - например, у вас также есть такие вещи, какImage
как глобальный, ничего общего с языком javascript, хотя - person Jaromanda X   schedule 08.03.2018