Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 08.05.2017
Сообщений: 12

Область видимости

18.01.2020, 13:20. Показов 1681. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! С приходом ES6 в JS в полной мере заработала блочная область видимость и вот буквально на днях задался таким вопросом:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
const func = function() {
  console.log( this.val);
}
 
const obj = {
  val: 'fizz',
  func: func
}
 
var val = 'buzz';
obj.func();//'fizz'
func();//'buzz'
тут все понятно происходит связывание this, во втором вызове это глобальный объект у которого берется свойство val = 'buzz'

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
const func = function() {
  console.log( this.val);
}
 
const obj = {
  val: 'fizz',
  func: func
}
 
const val = 'buzz';
obj.func();//'fizz'
func();//undefined
вот тут я не до конца понимаю,т.е понятно,что тут работает блочная область видимости и в у глобального объекта сейчас нету свойства val, но тогда собственно возникает вопрос где сейчас хранится переменная val и собственно к какой области видимости она относится , у меня есть предположение,что в момент объявления этой переменной создается неявный блок :
JavaScript
1
2
3
4
{
const val = 'buzz';
...
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2020, 13:20
Ответы с готовыми решениями:

Область видимости
Здравствуйте есть один главный фал с функциями common.js, а к каждой странице подключается js файл, который нужен для неё. Например, для...

Область видимости
привет, почему в этом нет ошибки? Почему из edit вызывается Set? ведь у вызова this.Set() - this будет окружающая функция this.Edit, а в...

Область видимости
Есть код,полностью рабочий,но это-то мне и странно,ведь переменная i1 определена в функции p1(), а значит только в ней и должна быть...

1
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
18.01.2020, 19:04
Лучший ответ Сообщение было отмечено Qwerty_Wasd как решение

Решение

Цитата Сообщение от seredf Посмотреть сообщение
где сейчас хранится переменная val
Формально это не переменная, а readonly константа.
Хранится в области видимости текущего скрипта.

let не добавляет свойства к объекту window, а var добавляет.

-----
Можете ещё поиграться: на странице между <script> var перебегает, а let скорее всего не перебегает. Проверяйте.

Между <script type="module> точно не перебегает.

Добавлено через 11 минут
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script type="module">
        let a = 777;
    </script>
    <script type="module">
        console.log(a);
    </script>
</body>
</html>
А вот так без модуля переменная a имеет видимость для всей страницы
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script>
        let a = 777;
    </script>
    <script type="module">
        console.log(a);
    </script>
</body>
</html>
Добавлено через 2 минуты
Ещё интересный момент - модуль отсекает от window и var:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script type="module">
        var a = 777;
    </script>
    <script type="module">
        console.log(a); // Не видит
    </script>
</body>
</html>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2020, 19:04
Помогаю со студенческими работами здесь

Область видимости переменных
Из метода loader.load, который подгружает модель часов, нужно передать значение в переменную var stats = 0. var stats = 0; ... ...

Область видимости внутри for
var to_hide = document.getElementsByClassName('expand_full_review'); var expand = document.querySelector(&quot;.recal_link&quot;); for (var i...

глобальная область видимости
привет всем. прочитал что переменные обьявляются ключом Var для того, чтобы определить её область видимости. так вот назрел следующий...

Область видимости переменных
Здравствуйте, у меня существует проблема с областью видимости переменных вот в этом коде: ... xhr.onload = function() { try ...

Область видимости в анонимной функции
for (var i = 0; i &lt; players_array.length; /* Пускай players_array.length будет равно 2*/ i++) { //Вывод числа итераций ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru