Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.11.2014, 15:35
Кандидат Javascript-наук
Отправить личное сообщение для soltx Посмотреть профиль Найти все сообщения от soltx
 
Регистрация: 19.05.2013
Сообщений: 144

Инкремент и декремент
Привет! Накидайте задачек для закрепления материала http://learn.javascript.ru/task/inkr...ent-1708223838
Ответить с цитированием
  #2 (permalink)  
Старый 23.11.2014, 18:52
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

объясни почему этот код не работает
var a = 1++;
alert(a);
Ответить с цитированием
  #3 (permalink)  
Старый 23.11.2014, 20:15
Аватар для BaBaKa
Интересующийся
Отправить личное сообщение для BaBaKa Посмотреть профиль Найти все сообщения от BaBaKa
 
Регистрация: 18.07.2014
Сообщений: 14

потому что все нормальные люди напишут:
var a =2;
alert(a);

или
alert(2);
Ответить с цитированием
  #4 (permalink)  
Старый 23.11.2014, 20:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

BaBaKa, по-твоему некий код может не работать только потому, что кто-то пишет какой-то другой код?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 23.11.2014, 21:03
Кандидат Javascript-наук
Отправить личное сообщение для soltx Посмотреть профиль Найти все сообщения от soltx
 
Регистрация: 19.05.2013
Сообщений: 144

Сообщение от bes Посмотреть сообщение
объясни почему этот код не работает
var a = 1++;
alert(a);
Инкремент/декремент можно применить только к переменной.
Ответить с цитированием
  #6 (permalink)  
Старый 23.11.2014, 21:21
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

bes,
Потому что число является иммутабельным объектом? Соответственно, такой синтаксис является недопустимым. Только я не понимаю, нахрена, чтобы продемонстрировать это, нужно присваивание? При какой п*де тут оно?
++1

Последний раз редактировалось krutoy, 23.11.2014 в 21:26.
Ответить с цитированием
  #7 (permalink)  
Старый 23.11.2014, 21:30
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от bes
var a = 1++;
alert(a);
И у тебя там ничего не записывается в переменную, твой алерт вообще не выполняется. Ошибка вываливается при инкременте, до присваивания даже не доходит, не то что до алерта
var a = 1++;
alert("something else");
Ответить с цитированием
  #8 (permalink)  
Старый 23.11.2014, 21:55
Кандидат Javascript-наук
Отправить личное сообщение для soltx Посмотреть профиль Найти все сообщения от soltx
 
Регистрация: 19.05.2013
Сообщений: 144

bes скинул задачку, как пример "объясни почему этот код не работает" некоторых понесло не туда и не в тему, ладно тему можно закрыть сам напридумывал.
Ответить с цитированием
  #9 (permalink)  
Старый 23.11.2014, 22:14
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от soltx
объясни почему этот код не работает
Ага, объясни, почему этот код не работает:
throw "ERROR"
var rows=document.getElementsByTagName("tr");var j=0;var row=false;var item=false;var imglist=false;var attr="";var change=false;var found=false;var tcat=false;for(var i=0;i<rows.length;i++)
{row=rows[i];if(!row.className||row.className=='')
{change=false;tcat=false;for(j=0;j<row.childNodes.length;j++)
{item=row.childNodes[j];if(item.className&&item.className=='thead')
{change=true;}
if(item.className&&item.className=='tcat')
{if(tcat)
{item.className='tcat tcat2';}
tcat=true;}}
if(change)
{row.className='thead-row';imglist=row.getElementsByTagName("img");for(j=0;j<imglist.length;j++)
{attr=imglist.item(j).src;if(attr.indexOf('menu_open.gif')>0)
{attr=attr.replace(/menu_open.gif/,'menu_open2.gif');imglist.item(j).src=attr;}}}}
if(row.className&&row.className=='vbmenu_dark')
{imglist=row.getElementsByTagName("img");for(j=0;j<imglist.length;j++)
{attr=imglist.item(j).src;if(attr.indexOf('menu_open.gif')>0)
{attr=attr.replace(/menu_open.gif/,'menu_open2.gif');imglist.item(j).src=attr;}}}}
item=document.getElementById('posts');if(item)
{rows=item.getElementsByTagName('table');if(rows&&rows.length>1&&rows[1].className&&rows[1].className==='tborder')
{rows[1].style.borderTopWidth='0';}}
item=document.getElementById('post');if(item&&item.className&&item.className==='tborder')
{item.style.borderTopWidth='0';}
ca_parse_bbcode_block(document);function ca_parse_bbcode_block(parent)
{rows=parent.getElementsByTagName("table");for(i=0;i<rows.length;i++)
{ca_parse_bbcode_table(rows[i]);}}
function ca_parse_bbcode_table(row)
{return
if(row.className&&row.className=='bbcode-rounded bbcode-rounded-code')
{item=row.parentNode;if(item.offsetWidth==row.offsetWidth&&item.offsetWidth>0)
{change=row.offsetWidth- 40;if(item.className&&item.className=='bbcode-rounded-content')
{change=change- 10;}
row.style.width=change+'px';imglist=row.getElementsByTagName('pre');if(imglist.length)
{imglist[0].style.width=(change- 8)+'px';}}
else
{change=item.offsetWidth- 40- row.offsetWidth;if(change>10)
{if(item.className&&item.className=='bbcode-rounded-content')
{change=change- 10;}
row.style.width=(row.offsetWidth+ change)+'px';imglist=row.getElementsByTagName('pre');if(imglist.length)
{imglist[0].style.width=(imglist[0].offsetWidth+ change- 8)+'px';}}}}
if(row.className&&row.className=='bbcode-rounded bbcode-rounded-quote')
{item=row.parentNode;if(item.offsetWidth==row.offsetWidth&&item.offsetWidth>0)
{change=row.offsetWidth- 40;if(item.className&&item.className=='bbcode-rounded-content')
{change=change- 10;}
row.style.width=change+'px';}
else
{change=item.offsetWidth- 40- row.offsetWidth;if(change>10)
{if(item.className&&item.className=='bbcode-rounded-content')
{change=change- 10;}
row.style.width=(row.offsetWidth+ change)+'px';}}}}
var ca_bbcode_parsed=true;
Ответить с цитированием
  #10 (permalink)  
Старый 23.11.2014, 22:16
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от soltx
bes скинул задачку, как пример "объясни почему этот код не работает" некоторых понесло не туда и не в тему, ладно тему можно закрыть сам напридумывал.
здесь принят хороший стиль - темы закрываются только в исключительных случаях
или что, попросил заданий, а, не решив и первого, сразу в кусты?


Сообщение от soltx
Инкремент/декремент можно применить только к переменной.
для понимания того как работают конструкции javascript этого слишком мало

подсказываю
http://es5.javascript.ru/x11.html#x11.3
Цитата:
PostfixExpression :
LeftHandSideExpression
LeftHandSideExpression [no LineTerminator here] ++
LeftHandSideExpression [no LineTerminator here] --
http://es5.javascript.ru/x11.html#x11.3.1
Цитата:
Для вычисления PostfixExpression : LeftHandSideExpression [no LineTerminator here] ++ выполняются следующие шаги:
http://es5.javascript.ru/x11.html#x11.2
Цитата:
LeftHandSideExpression :
NewExpression
CallExpression

NewExpression :
MemberExpression
new NewExpression

MemberExpression :
PrimaryExpression
FunctionExpression
MemberExpression [ Expression ]
MemberExpression . IdentifierName
new MemberExpression Arguments
http://es5.javascript.ru/x11.html#x11.1
Цитата:
PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
http://es5.javascript.ru/x7.html#x7.8
Цитата:
Literal ::
NullLiteral
BooleanLiteral
NumericLiteral
StringLiteral
RegularExpressionLiteral
то есть, исходя из первой строчки алгоритма, там могут быть числовые литералы
вывод - ищи ответ в последующих строчках
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инкремент при удалении элемента Ioan31 Элементы интерфейса 4 24.12.2012 15:52
Инкремент содержимого div astral Общие вопросы Javascript 3 02.07.2010 22:43