Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 11.04.2013, 18:30
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

with-love-from-siberia,
Падает совсем не потому, а из-за использования WScript.Echo там где не надо. Вот так все нормально, хоть запускай через js, хоть через wsf
(function(that)
{
	that.a = 1;
})(this);

WScript.Echo( a );
Ответить с цитированием
  #22 (permalink)  
Старый 11.04.2013, 18:36
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

WScript - не JavaScript'овый объект, а WScript.Echo - не функция. Попробуйте, напр.
WScript.Echo( typeof WScript.Echo );
а
WScript.Echo( typeof WScript );
или
WScript.Echo( WScript.Echo instanceof Function );
вообще падают, чего (с точки зрения JavaScript) происходить не должно.

Последний раз редактировалось rgl, 11.04.2013 в 18:39.
Ответить с цитированием
  #23 (permalink)  
Старый 11.04.2013, 19:02
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Сообщение от rgl
var global = (function(){return this;})();
Кста, никто не мешает использовать и в стрикт моде:
var global=(function(){return this;})();
"use strict";
// и дальше все стрикт
Ответить с цитированием
  #24 (permalink)  
Старый 11.04.2013, 19:38
Интересующийся
Отправить личное сообщение для Владлен Посмотреть профиль Найти все сообщения от Владлен
 
Регистрация: 04.04.2013
Сообщений: 10

Блин, что ж такое.
function test() {
window.a = 1
alert(a)
}
alert(a)

внутри функции выводит а снаружи нет.(
Ответить с цитированием
  #25 (permalink)  
Старый 11.04.2013, 20:36
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

Сообщение от rgl
WScript - не JavaScript'овый объект, а WScript.Echo - не функция. Попробуйте, напр.
Я в курсе. Но дело не в этом. WScript.Echo всего лишь для иллюстрации. Попробуйте без нее. Например, так:
(function(that)
{
	that.a = function()
	{
	};
})(this);

a();


Понятно, что это искусственный пример, но он иллюстрирует проблему.
Ответить с цитированием
  #26 (permalink)  
Старый 12.04.2013, 12:13
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

with-love-from-siberia,
Ваша правда. Кста, так работает:
(function(that)
{
	that.a = function()
	{
		WScript.Echo( "It works!" );
	};
})(this);

a.call();
Ответить с цитированием
  #27 (permalink)  
Старый 05.08.2016, 19:38
Аспирант
Отправить личное сообщение для skillful Посмотреть профиль Найти все сообщения от skillful
 
Регистрация: 18.09.2012
Сообщений: 55

Здравствуйте. Понимаю - тема устарела, но все же. У меня похожий код. Нужно переменную socket сделать глобальной. Прошу помощи...
"use strict";

(function()
{
	// ======== global vars from config ========   
	var srvaddress = url_base + 'include/socket/';//url каталога
	var startserveraddress = srvaddress+'wsstart.php';
	var chataddr = 'ws://localhost:8889';


	// ======== private vars ========
	var socket;
	var xhttp;

	////////////////////////////////////////////////////////////////////////////
	var init = function()
	{
		//https://learn.javascript.ru/websockets Docs
		socket = new WebSocket(chataddr + '/' + cookies + '/516616546465464');

		socket.onopen = connectionOpen; //Соединение установлено
		socket.onmessage = messageReceived; //Получены данные
		//socket.onerror = errorOccurred; 
		//socket.onopen = connectionClosed;

		document.getElementById("msg-send").onclick = function()
		{
			//sendMessage();
			messagesend();
		};

	};

	function messagesend()
	{
	}

	function connectionOpen()
	{
		socket.send("{\"act\":\"start\", \"msg\":\"Connection with "+chataddr+". Подключение установлено обоюдно, отлично!\"}");
	}

	function messageReceived(e)
	{
		var json = eval("(" + e.data + ")");

	}

	function connectionClose() {
		socket.close();
	}

	return{
		// ---- onload event ----
		load : function () {
			window.addEventListener('load', function () {
				init();
			}, false);
		}
	}
})().load();
Ответить с цитированием
  #28 (permalink)  
Старый 05.08.2016, 21:19
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Ну так сотри var перед ней и она вылезет за пределы функции. Если там еще есть функция снаружи, то напиши явно window.socket= и далее по тексту. Ты же читал тему сначала или забил?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать переменную из JS в PHP методом xhr.send() ? winston3d AJAX и COMET 5 09.02.2013 20:29
Как сделать локальную переменную глобальной?? Дмитрий Общие вопросы Javascript 8 02.11.2010 03:33
Немогу взять id как переменную Влад Общие вопросы Javascript 2 08.07.2009 19:38
Как вывести переменную из php в сценарий Vitaly jQuery 5 02.07.2009 17:54
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58