Javascript.RU

Конструкции языка. Обработка ошибок.

Update: Более новый материал по этой теме находится по адресу https://learn.javascript.ru/while-for.

Раздел иллюстрирует особенности управляющих конструкций javascript, таких как while/for, switch и обработку исключений.

Две формы while:

// проверка вначале
while(i<5) { … }
// условие потом
do { … } while (i<5)

И две принципиально разные формы for. Одна - обычная:

// заметьте - новая переменная объявлена тут же
for (var i=0;i<10;i++) {
   ...
}

Другая - итерация по свойствам объекта:

for(key in obj) {
  ... obj[key]
}

Можно исключить унаследованные свойства (т.е исключить из цикла прототип). Для этого используем функцию hasOwnProperty:

// цикл только по собственным свойствам
for(var key in obj) {
  if (obj.hasOwnProperty(key)) {
    … obj[key] …
  }
}

В javascript можно использовать метки, чтобы прыгать между уровнями цикла.

Метки действуют только для циклов и switch, т.е организовать полноценный goto через них нельзя Sad

На метку внешнего цикла можно перейти при помощи break/continue, вот пример:

// внешний цикл
outer: for(…) {
	…
	// внутренний цикл
	for (…) {
		…
		// можно вывалиться из внешнего цикла
		break outer;
		…
		// или перейти на следующую итерацию внешнего цикла
		continue outer;
		…
	}
}

В некоторых языках можно сделать только switch(число/строка).

В javascript же конструкция switch принимает совершенно любой объект. Перед switch, как и перед циклами можно ставить метку, и делать break/continue на внешнюю метку.

switch (obj) {
case "test":
	…
	break
case 5:
	…
	break outer
default: 
	…
}

With - специфическая конструкция javascript, самый известный ее аналог - with в Pascal/Delphi. Поэтому мы остановимся на ней подольше.

У каждой функции есть своя область видимости. В простейшем случае, одна функция не видит внутренние переменные другой. Умение обращаться с областью видимости позволяет задавать приватные переменные класса, понимать и создавать замыкания, и многое другое.

Более подробно тема видимости разобрана в статье функции Javascript, а здесь - разберем конкретно то, что с ней делает with.

Коротко - with берет объект и делает из него новую вложенную область видимости.

Например, в некоторой функции:

function go() {
...
var obj

// obj будет браться из текущей области видимости
obj.size = 5
...
}

Создадим тестовый объект, но не просто var obj, а более развернуто:

obj_size

(Более подробно об определении и свойствах объекта написано в разделе Объекты, ООП)

Если мы завернем любые операторы в блок with(obj), то все свойства будут первым делом искаться в obj, а уже потом - во внешней области видимости.

В этом примере свойства weight и size будут взяты из объекта obj:

with (obj) {
	// width/height берутся из найденного size
	return weight / (size.width + size.height)
}

А здесь - with делает область видимости из obj.size:

with (obj.size) {
	return width + height
}

В чем польза with? Как правило, его используют для упрощения синтаксиса, чтобы много раз не повторять объект.

Типичный пример из реальной жизни:

with (div.style) {
	if (!browser.isSafari) {
		position = 'absolute'
	}
	left = 0
	right = 0
	visibility = 'hidden'	
}

Напомню, что интерпретатор javascript ищет все переменные в ближайшей области видимости. Если не находит - ищет в следующей, и так далее - до глобальных переменных, т.е window.
Поэтому можно, например, делать конструкции типа такой:

with (obj) {
	with (size) {
		return weight / (width + height)
	}
}

Здесь переменные из разных областей видимости используются в одном выражении.

with javascript

Область видимости size находится внутри obj, поэтому интерпретатор будет искать weight так:

  1. сначала посмотрит weight в size
  2. не найдет там такой переменной
  3. посмотрит weight в obj
  4. использует weight из obj

Работа с with(obj) не эквивалентна работе напрямую с объектом obj, т.к никаких новых переменных добавить в obj нельзя.

Например, сделаем тестовый объект:

obj = {
	weight: 100
}

mwsnap010.jpg

Внутри with можно получить weight, и даже поменять его значение:

javascript with

Но вот при попытке добавить переменную возникнет проблема:

mwsnap012.jpg

Сам объект не поменялся, зато перезаписали глобальную переменную

alert(obj.size)   // => undefined
alert(window.size)   // => 10

У with есть одна большая проблема, из-за которой многие вообще рекомендуют забыть эту конструкцию.

А именно - внутри блока with абсолютно нельзя сказать, откуда будет взята та или иная переменная.

Выше разобран пример, когда weight ищется сначала в size, затем в obj, и потом - в глобальной области window.
Если переменной не окажется там, где она по плану должна быть, то она будет взята/изменена в другой области видимости, возможно даже в глобальной window.

Это приводит к трудноуловимым ошибкам, поэтому часто используют альтернативу: временную переменную.

mwsnap013.jpg

С другой стороны, синтаксис with удобнее и полезен там, где ошибок уж точно не может быть. Например, при манипуляции стилями.

Работа с исключениями в javascript организована в типичном для языка стиле вседозволенности.

Абсолютно любой объект можно бросить в виде исключения:

try {
  ...
  throw {message: "Ого!"}
  ..
} catch (e) {
  alert("Ага, попался!")
}

Обычно бросают, все же, не простые объекты, а потомки встроенного класса Error:

throw new Error("connection down, server timeout")
// или сделать наследника Error:
throw new ConnectionError("server timeout")

Встроенный класс Error удобен для унификации проверки "a instanceof Error" и интероперабельности с другими библиотеками, так как ничего полезного в нем часто нет.

В Firefox у объекта Error есть полный бэктрейс в свойстве stack и еще масса полезных свойств:

// так можно быстро узнать стек без отладчика
alert( (new Error()).stack )

В IE тоже есть некоторые полезные свойства, а в Opera/Safari - на момент написания только message:

var e = new Error("hi")
alert(e.message)  // => "hi"

Поэтому, например, у меня созданы потомки (синтаксис фреймворка dojo):

// базовый класс для ошибок, со стеком (Firefox)
// сообщением message и дополнительной информацией extra
dojo.declare(
	"dojo.Error",
	Error,
	function(message, extra) {
		this.message = message;
		this.extra = extra;
		this.stack = (new Error()).stack;	
	}
)
// Потомок, имя ошибки хранится в name
// формат: dojo.declare(Имя, Родитель, Конструктор)
dojo.declare(
	"dojo.CommunicationError",
	dojo.Error,
	function() {
		this.name="CommunicationError";
	}
)

// еще потомок для примера
dojo.declare(
	"dojo.LockedError",
	dojo.Error,
	function() {
		this.name="LockedError";
	}
)
...

При перехвате исключений редко нужно перехватывать все подряд. Обычно - надо перехватить определенный класс исключений. Стандартный оператор catch такого не умеет, поэтому полный код обработки будет выглядить так:

try {
	… код ...
} catch(e) {
	// ловим нужное исключение
	if (e instanceof ConnectionError) {
		// обрабатываем его
		… reconnect …
	} else {
		// пробрасываем незнакомое исключение дальше
		throw e
	}
		
} finally {
	// блок finally выполняется всегда, 
	// вне зависимости - было исключение или нет
	… notifyUser() ..
}

В этом примере также присутствует блок finally, взятый в javascript из java. В стандартной схеме try..catch..finally, код из блока finally выполняется либо после try, если эксепшна нет, либо после catch, даже если эксепшн выпал наружу.

Короче говоря, код в finally выполнится при любом результате работы try/catch, и туда удобно ставить всякие очистки, уведомления о конце процесса и т.п.


Автор: romario (не зарегистрирован), дата: 3 октября, 2008 - 12:16
#permalink

Вопрос к гуру JavaScript: можно ли как-то перехватывать синтаксические ошибки (например, отсутствие скобки какой-нибудь) с помощью try-catch? По умолчанию в IE7 такие ошибки в самом скрипте не перехватываются почему-то, а просто IE выдает свой алерт.


Автор: Илья Кантор, дата: 4 октября, 2008 - 17:30
#permalink

Если скрипт eval'ится - то просто try/catch, а если скрипт загружается с сервера, например, тегом script - и в нем может быть ошибка, то попробуй отловить ее обработчиком window.onerror


Автор: putana (не зарегистрирован), дата: 7 октября, 2008 - 14:31
#permalink

Если надо проерить код на ошибки то
воспользуйся http://jslint.com


Автор: Илья Кантор, дата: 8 октября, 2008 - 09:00
#permalink

Там валидатор вроде очень придирчив к синтаксису, выдает ошибки даже на хорошем коде, не?


Автор: Dmc (не зарегистрирован), дата: 7 декабря, 2008 - 18:40
#permalink

Да, придирчив, часто видит ошибки там где их нет и не видит - там где есть.
Но кое-что всё-таки вылавливает, поэтому я им пользуюсь.

PS. Рад что мои строки перевода drupal с drupaler'а столетней давности используются на подобных проектах


Автор: Гость (не зарегистрирован), дата: 27 апреля, 2012 - 10:38
#permalink

ну как сказать, эта придирчивость настраивается, я им уже давно крашу свои скрипты до идеала)


Автор: osama shk (не зарегистрирован), дата: 21 марта, 2020 - 23:15
#permalink

I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article.
マリッジリング


Автор: Артём_ (не зарегистрирован), дата: 22 января, 2009 - 16:31
#permalink

тема достаточно сложная, но расписана очень понятна


Автор: Enoch Root (не зарегистрирован), дата: 7 июля, 2009 - 16:13
#permalink

А можно ли как-то устанавливать таймаут для операций с try-catch? Например, когда используется скрипт от Google Analitycs, а у человека в данный момент нет доступа во внешний интернет? (сайт виден в локальной сети).


Автор: Илья Кантор, дата: 7 июля, 2009 - 21:22
#permalink

Можно выделить операцию отдельно при помощи setTimeout


Автор: Гость (не зарегистрирован), дата: 20 ноября, 2009 - 03:51
#permalink

То что "Метки действуют только для циклов и switch, т.е организовать полноценный goto через них нельзя" это радостное событие, т.к. "полноценный goto" при неправильном использовании делает программу неуправляемой.

А неправильное использование goto - это, банально, непредсказуемость того, в какую точку программы будет передано управление.


Автор: Гость (не зарегистрирован), дата: 8 октября, 2010 - 10:44
#permalink

Здравсвуйте,
меня интересует сказывается ли использование инструкции With на производительности кода??

или более предпочтительно для сокращения кода использовать переменную (s= obj.size) ??

ЗЫ: спасибо за ресурс =)


Автор: Гость (не зарегистрирован), дата: 14 октября, 2010 - 18:40
#permalink

Привет!

Метки действуют только для циклов и switch, т.е организовать полноценный goto через них нельзя Sad

Это ж клево, что нельзя - нам ведь не нужен спагетти-код;)


Автор: Гость (не зарегистрирован), дата: 14 октября, 2010 - 19:03
#permalink

По поводу switch и использование в нем объектов:
Врядли конечно такое пригодится (так как сравнение для неэлементарных типов осуществляется по ссылке), разве только для проверки, не подменил ли кто объект, на который ссылается ссылка.


Автор: Гость (не зарегистрирован), дата: 30 октября, 2011 - 18:20
#permalink
w=window.open(url);

как в скрипте главного окна отследить, что страница не загрузилась?
(нет страницы, отсутствует соединение....)


Автор: Раед, дата: 3 февраля, 2012 - 19:23
#permalink

так и не разобрался с этими исключениями-ошибками. Например:

throw new Error('my error')

и куда всё это полетит, а главное, для чего может использоваться


Автор: nSauk, дата: 29 августа, 2012 - 15:09
#permalink
for(key in obj) {
  ... obj[key]
}

Недавно познакомился с этим видом циклов и сразу заинтересовался производительностью. Я думал, что a in b — что-то вроде обёртки для a < b.length; a++, но, как оказалось, такие циклы работают быстрее на 10–20% в Firefox и Chrome (в других не проверял). Имейте в виду.


Автор: Фёдор Геращенко (не зарегистрирован), дата: 10 апреля, 2013 - 12:57
#permalink

Внутри with можно получить weight, и даже поменять его значение - внутри "obj" и далее по тексту...


Автор: Гость (не зарегистрирован), дата: 3 июля, 2013 - 14:20
#permalink

Здравствуйте, при установке новой версии Mozilla Firefox, исполняемый файл Firefox Setup 22.0.exe, у меня возникла проблема, стало выдавать ошибку Error: illegal operation on WrappedNative prototype object. Какая причина этой ошибки может быть, как ее исправить? Подскажите пожалуйста. Я не программист, но если Вы мне подскажите, что нужно прочесть по теме, чтобы понять алгоритм действия или алгоритм действия, то мне уже будет легче. Заранее благодарна. С Уважением Ксюша.


Автор: find this (не зарегистрирован), дата: 14 февраля, 2020 - 11:19
#permalink

меня возникла проблема, стало выдавать ошибку Error: illegal operation on WrappedNative prototype object. Какая причина этой ошибки может быть, как ее исправить? Подскажите пожалуйста. Я не п


Автор: Гость (не зарегистрирован), дата: 14 октября, 2014 - 20:57
#permalink

Про исключения и Error вообще непонятно о чём речь, рассчитано похоже на продвинутых.


Автор: Stios Jan (не зарегистрирован), дата: 23 декабря, 2019 - 07:11
#permalink

то все свойства будут первым делом искаться в obj, а уже потом - во внешней области видимости.
Free game happy wheels.


Автор: osama shk (не зарегистрирован), дата: 28 января, 2020 - 13:58
#permalink

I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article.
click this site


Автор: osama shk (не зарегистрирован), дата: 30 января, 2020 - 17:49
#permalink

Nice blog and absolutely outstanding. You can do something much better but i still say this perfect.Keep trying for the best.
find this


Автор: osama shk (не зарегистрирован), дата: 2 февраля, 2020 - 15:51
#permalink

You completed a few fine points there. I did a search on the subject and found nearly all persons will go along with with your blog.
https://inlandempirepoolbuilders.com


Автор: osama khi (не зарегистрирован), дата: 2 февраля, 2020 - 18:24
#permalink

I am glad you take pride in what you write. This makes you stand way out from many other writers that push poorly written content.
ataques de ansiedad


Автор: bondos (не зарегистрирован), дата: 10 февраля, 2020 - 22:50
#permalink

Awesome article! I want people to know just how good this information is in your article. It’s interesting, compelling content. Your views are much like my own concerning this subject.
Web Marketing


Автор: osama shk (не зарегистрирован), дата: 12 февраля, 2020 - 17:20
#permalink

I really thank you for the valuable info on this great subject and look forward to more great posts. Thanks a lot for enjoying this beauty article with me. I am appreciating it very much! Looking forward to another great article. Good luck to the author! All the best!
filing for divorce in colorado


Автор: osama shk (не зарегистрирован), дата: 15 февраля, 2020 - 14:22
#permalink

I am very happy to discover your post as it will become on top in my collection of favorite blogs to visit.
rico chandra kusuma


Автор: osama shk (не зарегистрирован), дата: 15 февраля, 2020 - 16:41
#permalink

Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work.
find here


Автор: osama shk (не зарегистрирован), дата: 15 февраля, 2020 - 18:02
#permalink

This content is written very well. Your use of formatting when making your points makes your observations very clear and easy to understand. Thank you.
go here


Автор: osama shk (не зарегистрирован), дата: 15 февраля, 2020 - 18:48
#permalink

I think this is one of the most significant information for me. And i’m glad reading your article. But should remark on some general things, The web site style is perfect, the articles is really great : D. Good job, cheers
family law attorney colorado springs


Автор: osama shk (не зарегистрирован), дата: 17 февраля, 2020 - 14:36
#permalink

Its a great pleasure reading your post.Its full of information I am looking for and I love to post a comment that "The content of your post is awesome" Great work.
crypto news


Автор: osama shk (не зарегистрирован), дата: 17 февраля, 2020 - 17:05
#permalink

I'm glad I found this web site, I couldn't find any knowledge on this matter prior to.Also operate a site and if you are ever interested in doing some visitor writing for me if possible feel free to let me know, i am always look for people to check out my web site.
see this


Автор: osama shk (не зарегистрирован), дата: 17 февраля, 2020 - 18:05
#permalink

Interesting post. I Have Been wondering about this issue, so thanks for posting. Pretty cool post.It 's really very nice and Useful post.Thanks
read the article


Автор: osama shk (не зарегистрирован), дата: 17 февраля, 2020 - 18:42
#permalink

Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work.
look at this


Автор: osama shk (не зарегистрирован), дата: 17 февраля, 2020 - 19:30
#permalink

Thanks a lot for sharing us about this update. Hope you will not get tired on making posts as informative as this.
thefancyvoyager


Автор: john bondjohde (не зарегистрирован), дата: 17 февраля, 2020 - 20:04
#permalink

Your website is really cool and this is a great inspiring article.
go to my blog


Автор: osama shk (не зарегистрирован), дата: 18 февраля, 2020 - 15:34
#permalink

I have read your blog it is very helpful for me. I want to say thanks to you. I have bookmark your site for future updates.
https://arkserverhosting.co.uk


Автор: osama shk (не зарегистрирован), дата: 19 февраля, 2020 - 12:36
#permalink

Thanks for the blog loaded with so many information. Stopping by your blog helped me to get what I was looking for.
battery hair dryer


Автор: john s (не зарегистрирован), дата: 19 февраля, 2020 - 12:59
#permalink

I haven’t any word to appreciate this post.....Really i am impressed from this post....the person who create this post it was a great human..thanks for shared this with us.
find this


Автор: johnb (не зарегистрирован), дата: 23 февраля, 2020 - 15:30
#permalink

I like this post,And I guess that they having fun to read this post,they shall take a good site to make a information,thanks for sharing it to me.
dji mavic air


Автор: Гость (не зарегистрирован), дата: 24 февраля, 2020 - 12:59
#permalink

Awesome and interesting article. Great things you've always shared with us. Thanks. Just continue composing this kind of post.
Atherosclerosis


Автор: osama shk (не зарегистрирован), дата: 25 февраля, 2020 - 12:05
#permalink

Hi! Thanks for the great information you have provided! You have touched on crucuial points!
dji mavic air


Автор: johnb (не зарегистрирован), дата: 25 февраля, 2020 - 14:31
#permalink

I think this is a really good article. You make this information interesting and engaging. You give readers a lot to think about and I appreciate that kind of writing.
crime scene cleanup


Автор: johnb (не зарегистрирован), дата: 25 февраля, 2020 - 14:31
#permalink

I think this is a really good article. You make this information interesting and engaging. You give readers a lot to think about and I appreciate that kind of writing.
crime scene cleanup


Автор: osama shk (не зарегистрирован), дата: 25 февраля, 2020 - 16:11
#permalink

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free.
click this site


Автор: johnb (не зарегистрирован), дата: 25 февраля, 2020 - 19:26
#permalink

Thanks for the post and great tips..even I also think that hard work is the most important aspect of getting success.
https://trulylovelykitchen.com


Автор: Гость (не зарегистрирован), дата: 25 февраля, 2020 - 19:51
#permalink

This is a great article thanks for sharing this informative information. I will visit your blog regularly for some latest post.
hair dryers australia


Автор: john bond (не зарегистрирован), дата: 26 февраля, 2020 - 15:44
#permalink

Thanks for the nice blog. It was very useful for me. I'm happy I found this blog. Thank you for sharing with us,I too always learn something new from your post.
Boiler installation


Автор: osama shk (не зарегистрирован), дата: 27 февраля, 2020 - 15:04
#permalink

Nice to be visiting your blog again, it has been months for me. Well this article that i've been waited for so long. I need this article to complete my assignment in the college, and it has same topic with your article. Thanks, great share.
psicologos en Madrid para adolescentes


Автор: Useless Websites (не зарегистрирован), дата: 28 февраля, 2020 - 15:29
#permalink

Автор: johnsss (не зарегистрирован), дата: 29 февраля, 2020 - 12:03
#permalink

This is a smart blog. I mean it. You have so much knowledge about this issue, and so much passion. You also know how to make people rally behind it, obviously from the responses.
Orange County Air Conditioning Home Service


Автор: osama shk (не зарегистрирован), дата: 1 марта, 2020 - 14:43
#permalink

Hi! Thanks for the great information you have provided! You have touched on crucuial points!
psicologos madrid adolescentes


Автор: osama shk (не зарегистрирован), дата: 1 марта, 2020 - 18:17
#permalink

I really loved reading your blog. It was very well authored and easy to undertand. Unlike additional blogs I have read which are really not tht good. I also found your posts very interesting. In fact after reading, I had to go show it to my friend and he ejoyed it as well!
Automotive


Автор: osama shk (не зарегистрирован), дата: 10 марта, 2020 - 17:35
#permalink

I was reading your article and wondered if you had considered creating an ebook on this subject. Your writing would sell it fast. You have a lot of writing talent.
best charcoal grills under 200


Автор: osama shk (не зарегистрирован), дата: 17 марта, 2020 - 19:07
#permalink

Thank you for such a well written article. It’s full of insightful information and entertaining descriptions. Your point of view is the best among many.

エンゲージリング


Автор: osama shk (не зарегистрирован), дата: 19 марта, 2020 - 17:12
#permalink

Only aspire to mention ones content can be as incredible. This clarity with your post is superb and that i may think you’re a guru for this issue. High-quality along with your concur permit me to to seize your current give to keep modified by using approaching blog post. Thanks a lot hundreds of along with you should go on the pleasurable get the job done.
結婚指輪 手作り


Автор: osama shk (не зарегистрирован), дата: 22 марта, 2020 - 21:41
#permalink

nice post, keep up with this interesting work. It really is good to know that this topic is being covered also on this web site so cheers for taking time to discuss this!
婚約指輪 猫


Автор: osama shk (не зарегистрирован), дата: 2 апреля, 2020 - 10:23
#permalink

I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.
detoks


Автор: 23isback (не зарегистрирован), дата: 17 апреля, 2020 - 06:12
#permalink

Автор: osama shk (не зарегистрирован), дата: 1 мая, 2020 - 22:11
#permalink

This Dentist near 60106 blog is so nice to me. I will keep on coming here again and again. Visit my link as well..
post free ads without registration


Автор: xem truc tiep bong da hom nay (не зарегистрирован), дата: 2 июля, 2020 - 12:15
#permalink

I think this is an informative post and knowledgeable. I would like to thank you for the efforts you have made in writing this article xem truc tiep bong da hom nay and truc tiep bong da


Автор: Sophie Miller (не зарегистрирован), дата: 22 июля, 2020 - 19:30
#permalink

Hello! I'm sorry, that is not the topic! I really like your forum! Thank you, I'm with you)


Автор: ofertas (не зарегистрирован), дата: 5 августа, 2020 - 06:48
#permalink

I like information. Thank you for sharing the content. I found it very useful. I like the offers of stores and products.catalogos ofertas


Автор: digital88 (не зарегистрирован), дата: 11 августа, 2020 - 22:34
#permalink

I always like the content and how easy it presents us with the various seasonal models and options, thank you for sharing the various ways so that one can solve it. catalogos online


Автор: pedrito32 (не зарегистрирован), дата: 18 августа, 2020 - 01:51
#permalink

interesting the various contents the truth that you have in your article I always like the various options that one has to understand this since you express it easily folletos de mexico


Автор: osama shk (не зарегистрирован), дата: 7 сентября, 2020 - 13:05
#permalink

Thank you so much for the post you do. I like your post and all you share with us is up to date and quite informative, i would like to bookmark the page so i can come here again to read you, as you have done a wonderful job.
ömlesztett nemzetközi szállítmányozás Hollandia Europa Road


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:46
#permalink

Wow the blog you give us is amazing, no wonder many people want to read this. https://celebrityinsider.org/


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:46
#permalink

Wow the blog you give us is amazing, no wonder many people want to read this. https://celebrityinsider.org/


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:48
#permalink

I will recomend this blog to all of my friends. Great article.
https://happygamer.com/


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:48
#permalink

I will recomend this blog to all of my friends. Great article.
https://happygamer.com/


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:50
#permalink

Thank you for this inspiring blog. I wait for more
https://ballstepded.com/


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:50
#permalink

Thank you for this inspiring blog. I wait for more
https://ballstepded.com/


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:50
#permalink

I learned so much from this blog. Good inforamtion. https://fixoserror.com/


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:50
#permalink

I learned so much from this blog. Good inforamtion. https://fixoserror.com/


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:50
#permalink

I wait for more.Great article.
https://premiereretail.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:50
#permalink

I wait for more.Great article.
https://premiereretail.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:51
#permalink

I stumbled across this blog.Great article. https://tecsprint.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:51
#permalink

I stumbled across this blog.Great article. https://tecsprint.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:52
#permalink

Thank you for this amazing blog. Congratulations.
https://howtolose10poundsinaweek.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:52
#permalink

Thank you for this amazing blog. Congratulations.
https://howtolose10poundsinaweek.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:52
#permalink

The things i see here are very informative. Keep going. https://bargainistafashionista.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:52
#permalink

The things i see here are very informative. Keep going. https://bargainistafashionista.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:53
#permalink

I can say that is one of the best articles out on the internet. https://bankncard.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:53
#permalink

I can say that is one of the best articles out on the internet. https://bankncard.com


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:53
#permalink

I readed all the article. So informative https://vhan.net


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2020 - 18:53
#permalink

I readed all the article. So informative https://vhan.net


Автор: Гость (не зарегистрирован), дата: 10 сентября, 2020 - 16:21
#permalink

This is one of the best sites i have found on the internet until now. Nice article keep going.
https://millikenconstructioninc.com/


Автор: Гость (не зарегистрирован), дата: 10 сентября, 2020 - 16:21
#permalink

This is one of the best sites i have found on the internet until now. Nice article keep going.
https://millikenconstructioninc.com/


Автор: Гость (не зарегистрирован), дата: 11 сентября, 2020 - 16:15
#permalink

Thanks for the information, very clear and simple. I will try to use it.Love the way you write. Working my way through your article links
https://vvhen.to/


Автор: Гость (не зарегистрирован), дата: 11 сентября, 2020 - 16:15
#permalink

Thanks for the information, very clear and simple. I will try to use it.Love the way you write. Working my way through your article links
https://vvhen.to/


Автор: Гость (не зарегистрирован), дата: 15 сентября, 2020 - 12:09
#permalink

This is one of the best articles i found on the blogs around the internet. I am really interested in seeing more of this. Keep going with the great work!
https://gzgjskpzz1m.ga


Автор: Гость (не зарегистрирован), дата: 15 сентября, 2020 - 12:09
#permalink

This is one of the best articles i found on the blogs around the internet. I am really interested in seeing more of this. Keep going with the great work!
https://gzgjskpzz1m.ga


Автор: Гость (не зарегистрирован), дата: 19 сентября, 2020 - 10:56
#permalink

First of all ,you have picked a very unique theme . I think i might design something similar for a future project that i want to build .
On top of that ,i in truth enjoy most of your content pieces and your different point of view.
Thank you https://seoconsultants24.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 19 сентября, 2020 - 10:56
#permalink

First of all ,you have picked a very unique theme . I think i might design something similar for a future project that i want to build .
On top of that ,i in truth enjoy most of your content pieces and your different point of view.
Thank you https://seoconsultants24.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 19 сентября, 2020 - 11:34
#permalink

Nice information, many thanks to the author. It is incomprehensible to me now, but in general, the usefulness and significance is overwhelming.https://seokarma24.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 19 сентября, 2020 - 11:34
#permalink

Nice information, many thanks to the author. It is incomprehensible to me now, but in general, the usefulness and significance is overwhelming.https://seokarma24.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 19 сентября, 2020 - 15:20
#permalink

I have reviewed the article many times and I find it very impressive. The information is extremely useful especially the last part I care about that information very much. I have been looking for this certain information for a long time.
https://packseo.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 19 сентября, 2020 - 15:20
#permalink

I have reviewed the article many times and I find it very impressive. The information is extremely useful especially the last part I care about that information very much. I have been looking for this certain information for a long time.
https://packseo.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 23 сентября, 2020 - 16:58
#permalink

I’m gone to tell my little brother, that he should
also pay a quick visit this blog on regular basis to take updated from hottest information.
https://connectorseo.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 23 сентября, 2020 - 16:58
#permalink

I’m gone to tell my little brother, that he should
also pay a quick visit this blog on regular basis to take updated from hottest information.
https://connectorseo.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 23 сентября, 2020 - 17:06
#permalink

You have made some really good points there. I looked on the web to find out
more about the issue and found most individuals will go along with your views on this website
https://digitalseo24h.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 23 сентября, 2020 - 17:06
#permalink

You have made some really good points there. I looked on the web to find out
more about the issue and found most individuals will go along with your views on this website
https://digitalseo24h.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 23 сентября, 2020 - 17:13
#permalink

Fantastic blog! Do you have any helpful hints for aspiring writers?
I’m hoping to start my own site soon but I’m a little lost on everything.
https://sweetseo24h.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 23 сентября, 2020 - 17:13
#permalink

Fantastic blog! Do you have any helpful hints for aspiring writers?
I’m hoping to start my own site soon but I’m a little lost on everything.
https://sweetseo24h.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 23 сентября, 2020 - 18:16
#permalink

I am hoping the same best effort from you in the future as well. In fact your creative writing skills has inspired me.
https://fancyseo24h.blogspot.com/


Автор: Гость (не зарегистрирован), дата: 23 сентября, 2020 - 18:16
#permalink

I am hoping the same best effort from you in the future as well. In fact your creative writing skills has inspired me.
https://fancyseo24h.blogspot.com/


Автор: john bond (не зарегистрирован), дата: 25 сентября, 2020 - 20:31
#permalink

Great Information sharing .. I am very happy to read this article .. thanks for giving us go through info.Fantastic nice. I appreciate this post.
empresa de mudanças lago sul


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
14 + 1 =
Введите результат. Например, для 1+3, введите 4.
 
Текущий раздел
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum