объявления переменных, но они имеют несколько ключевых различий: 1. Область видимости: - var
: Объявленные переменные имеют функциональную область видимости. Это означает, что переменная объявленная внутри функции будет доступна во всем теле функции, даже если она объявлена после её использования. - let
и const
: Объявленные переменные имеют блочную область видимости. Это означает, что переменная будет видна только внутри блока, в котором она объявлена. 2. Поднятие (Hoisting): - var
: Переменные объявленные с помощью var
поднимаются до начала функции, что делает их доступными в любом месте функции. - let
и const
: Переменные объявленные с помощью let
и const
не поднимаются до начала функции, они остаются недоступными до тех пор, пока не будут объявлены. 3. Переопределение: - var
: Переменные объявленные с помощью var
могут быть переопределены. - let
: Переменные объявленные с помощью let
также могут быть переопределены, но только внутри области видимости, в которой они были объявлены. - const
: Переменные объявленные с помощью const
не могут быть переопределены, но если они являются ссылками на объекты, то содержимое объекта может быть изменено.4. Инициализация: - var
: Переменные, объявленные с помощью var
, не требуют обязательной инициализации. - let
и const
: Переменные, объявленные с помощью let
и const
, требуют обязательной инициализации при объявлении. Эти различия делают ключевые слова let
, var
и const
полезными в различных сценариях разработки.
let a = 222
function cc(){
console.log(this.a) //undefined, и переменная поднятие тут не причём, this указывает на window, где нет свойства a
console.log(a) /// 222 это подтверждает, что это не связано
}
cc()
// var dd = 111
function oo(dd){
console.log(this.dd) // 1111 var объявленная глобальная переменная висит на window
console.log(dd) // 2
var dd=2222
console.log(dd) // 2222
}
oo(2)