Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Просьба подсказать (https://javascript.ru/forum/misc/42696-prosba-podskazat.html)

Chekist 06.11.2013 10:52

Просьба подсказать
 
Доброго времени суток!
Прошу помощи найти ошибку в коде.
Цель:
1) Нажал на .check один раз - посчиталось значение переменной.
2) Нажал на .check еще раз - к уже известному значению добавилось новое.
http://jsfiddle.net/AdTg7/

Что происходит: всегда почему-то у меня s=undefined, и поэтому нет перехода к условию else......

Chekist 06.11.2013 10:57

Почему-то думаю, что переменная s теряется каждый раз при новом клике... это можно как-нибудь исправить? (сделать глобальной?)

danik.js 06.11.2013 10:59

var s = 0;


Это локальная переменная. Она будет уничтожена по завершению работы функции. При последующем запуске функции никакой s существовать не будет. Таким образом else никогда не выполнится.

danik.js 06.11.2013 11:01

Chekist, у тебя обе ветви кода одинаковые, в чем смысл создавать две одинаковые ветви?

Chekist 06.11.2013 11:04

Тогда как передать локальную переменную из функции в глобальную?
Чтобы каждый раз к ней же и прибавлять локальную

ksa 06.11.2013 11:13

Цитата:

Сообщение от Chekist
это можно как-нибудь исправить?

Как вариант...

alert(inc(1));
alert(inc(10));
alert(inc(20));
function inc(N) {
	this.s=this.s||0;
	this.s+=N;
	return this.s;
};


Часовой пояс GMT +3, время: 12:47.