Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.06.2014, 10:57
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Почему не следует использовать var в global
Наверное, многие думают, что объявленная в global переменная с var отличается от той что без var только тем, что имеет скрытое св-во dontdelete. Я выяснил, что в node, помимо этого, она не копируется в global. Возможно, еще где-нибудь. Это значит, к примеру, что она не будет доступна через конструкцию for(i in global). Поэтому, в общем случае, не стоит объявлять через вар в глобальной области. Объявляя без вар мы ничего не теряем. Но не наоборот. Так что это тупой базворд, не надо слушать этих умников от CS.
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2014, 11:20
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Стоит различать свойства глобального объекта и глобальные переменные.
Почитай, например http://dmitrysoshnikov.com/ecmascrip...riable-object/
Отличие не только в dontdelete

var Object; //глобальная функция
alert(typeof Object); //по прежнему доступен


var postMessage; //свойство объекта window
alert(typeof postMessage) //теперь до postMessage можно достучаться
                         // только с помощью window.postMessage
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2014, 11:36
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

В соседней теме на то же тебе же отвечал, процитирую:
Сообщение от Erolast Посмотреть сообщение
Это пережиток былого. В современном javascript при объявлении переменных ВСЕГДА нужно использовать var (ну либо const/let). Попробуй объявить без var в строгом режиме - и интерпретатор радостно выдаст ошибку.
"use strict";

try {
  somevar = 100;
} 
catch (e) {
  alert(e);
}


В node.js область видимости текущего скрипта не равна глобальной области видимости. Каждый модуль создает свою область видимости. Потому объявленная через var переменная не становится глобальной, да.
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2014, 11:50
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Erolast Посмотреть сообщение
В соседней теме на то же тебе же отвечал, процитирую:
Я в соседней теме тебе ответил, добавлю только, что про область видимости модулей я не говорил, че ты их приплетаешь сюда, я хз
Ответить с цитированием
  #5 (permalink)  
Старый 27.06.2014, 11:58
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Octane
по прежнему доступен
А что он из себя представляет? В node он undefined. А у Вас что?
Ответить с цитированием
  #6 (permalink)  
Старый 27.06.2014, 12:01
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Object undefined?
Ответить с цитированием
  #7 (permalink)  
Старый 27.06.2014, 12:04
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Octane
по прежнему доступен
попробовал в Firefox вот так:
Object=1
console.log(typeof Object)// number
Ответить с цитированием
  #8 (permalink)  
Старый 27.06.2014, 12:04
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Octane Посмотреть сообщение
Object undefined?
Да
Ответить с цитированием
  #9 (permalink)  
Старый 27.06.2014, 12:08
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Octane Посмотреть сообщение
Object undefined?
Да, в firefox и в node, если
var Object=1;
console.log(typeof Object)//number

так, то что с var, что без, number
Ответить с цитированием
  #10 (permalink)  
Старый 27.06.2014, 12:11
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Я в соседней теме тебе ответил
Процитирую ту часть моего ответа на твой ответ, что как раз в тему этой темы:
Цитата:
Цитата:
Мне плевать на него [strict mode]
То есть, ты признаешь ранние стандарты, а на современные тебе плевать?) Ну-ну, продолжай в том же духе.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Штрих коды для Java mocaua Общие вопросы Javascript 2 27.02.2014 05:41
функция выделения текста в textarea, не работает в IE Alexander333 Internet Explorer 6 30.06.2012 18:21
Проблема с обработкой OnClick suslik90 Events/DOM/Window 1 11.05.2012 21:09
Библиотека javascript эффектов HelpeR Ваши сайты и скрипты 39 15.05.2010 21:30
CComponent - кроссбраузерные компоненты tenshi Ваши сайты и скрипты 5 20.04.2010 23:22