Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.03.2015, 20:46
nbq nbq вне форума
Интересующийся
Посмотреть профиль Найти все сообщения от nbq
 
Регистрация: 14.03.2015
Сообщений: 10

Сообщение от zhurchik
А если я хочу задать глобальную переменную из функции?
можешь написать window.a=...
а чтобы не писать каждый раз window, напиши вначале скрипта w=window

а внутри ф-ции w.a=...

Но пока не стоит с этим заморачиваться, вроде никаких проблем пока нет с этим. если будут, тогда и думать будем
Ответить с цитированием
  #12 (permalink)  
Старый 14.03.2015, 21:17
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Сообщение от nbq
а если "use strict" убрать?
use strict - это режим соответствия стандарту ES5. Неудачное название, да, очевидней бы было 'use ES5', но уж как есть.

Сообщение от nbq
можно пруф, где написано, что запрещено?
Сообщение от спецификация
When an assignment occurs within strict mode code, its LeftHandSide must not evaluate to an unresolvable reference. If it does a ReferenceError exception is thrown upon assignment.
https://people.mozilla.org/~jorendor...ml#sec-11.13.1, примечание.

Сообщение от nbq
Разница в том, что перменную с var невозможно удалить
delete предназначен для удаления свойств, а не переменных
Сообщение от спефикация
When a delete operator occurs within strict mode code, a SyntaxError exception is thrown if its UnaryExpression is a direct reference to a variable, function argument, or function name.
https://people.mozilla.org/~jorendor...tml#sec-11.4.1, примечание.

Сообщение от nbq
обойти это легко, можно писать window.a=1
Да, так и надо делать. JS не кофе, он спроектирован так, чтобы синтаксис был четким, подробным и очевидным - это во-первых, во-вторых - код при возможности должен быть отвязан от скопа, для лучшей фрагментированости и переносимости.
Ответить с цитированием
  #13 (permalink)  
Старый 14.03.2015, 21:18
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
чтобы не писать каждый раз window, напиши вначале скрипта w=window
Чтобы не писать каждый раз window, поставь себе редактор с автодополнением и сниппетами. Тот, кто будет читать этот код
w.one = 10;
w.second = 20;

ниуя не поймет, чо творится.
Ответить с цитированием
  #14 (permalink)  
Старый 14.03.2015, 21:22
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Но засирать глобал я бы вообще не рекомендовал.
...дополню:
http://www.2ality.com/2014/09/es6-modules-final.html
http://webpack.github.io/
http://browserify.org/
http://requirejs.org/
Ответить с цитированием
  #15 (permalink)  
Старый 14.03.2015, 21:27
nbq nbq вне форума
Интересующийся
Посмотреть профиль Найти все сообщения от nbq
 
Регистрация: 14.03.2015
Сообщений: 10

Сообщение от Erolast
When an assignment occurs within strict mode code, its LeftHandSide must not evaluate to an unresolvable reference. If it does a ReferenceError exception is thrown upon assignment.
Ну, как я и говорил, только в strict mode
Ответить с цитированием
  #16 (permalink)  
Старый 14.03.2015, 21:32
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Я же говорил уже, строгий режим - это режим соответствия стандарту ES5, существующий лишь для того, чтобы не поломать прежний код. Нет, если хочется говнокодить на ES3 - пожалуйста, но тогда зачем вообще в программисты лезть?
Ответить с цитированием
  #17 (permalink)  
Старый 14.03.2015, 21:35
nbq nbq вне форума
Интересующийся
Посмотреть профиль Найти все сообщения от nbq
 
Регистрация: 14.03.2015
Сообщений: 10

Сообщение от Erolast
строгий режим - это режим соответствия стандарту ES5
То есть, когда он будет введен, use strict писать не надо? Все будет работать в strict mode по дефолту?
Ответить с цитированием
  #18 (permalink)  
Старый 14.03.2015, 21:37
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
То есть, когда он будет введен, use strict писать не надо? Все будет работать в strict mode по дефолту?
ES5 введен уже как кучу лет, но из-за опасности поломки уже существующих сайтов сделать его семантику дефолтной нельзя, потому и придумали strict mode. В общем-то, это аналог смены мажорной версии.

Последний раз редактировалось Erolast, 15.03.2015 в 08:11.
Ответить с цитированием
  #19 (permalink)  
Старый 14.03.2015, 21:38
nbq nbq вне форума
Интересующийся
Посмотреть профиль Найти все сообщения от nbq
 
Регистрация: 14.03.2015
Сообщений: 10

Сообщение от Erolast
говнокодить
>>говнокодить
Насчет говнокода я бы поспорил. Есть куча языков, где нет никаких варов, и прекрасно обходятся. Конкретно в JS он нужен для локальных переменных. Зачем его в глобальную область притянули -- вообще не понятно. Возможно, что-то связано с производительностью, либо, какие то скрытые дыры в дизайне.
Ответить с цитированием
  #20 (permalink)  
Старый 14.03.2015, 21:53
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Есть куча языков, где нет никаких варов, и прекрасно обходятся
Да, транслирующийся в JS coffeescript - тому пример. Но это другие языки, с другой архитектурой и в другом стиле, глупо накладывать их на JS.

Цитата:
Зачем его в глобальную область притянули -- вообще не понятно.
1. Внешний скоп далеко не всегда глобален.
2. Очевидно, для единого стиля.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2d карусель, работает, но уверен - неоптимально. alko Ваши сайты и скрипты 22 21.07.2014 14:59
Jin: И снова о наследовании tenshi Ваши сайты и скрипты 16 19.08.2013 20:30
Разбор палитры изображений SSinn Events/DOM/Window 1 11.06.2013 02:26
Скроллинг клавишами и липкие блоки bes Общие вопросы Javascript 11 12.06.2012 22:08
Проблема с обработкой OnClick suslik90 Events/DOM/Window 1 11.05.2012 21:09