2016-12-30 1 views
-6

В этом коде, что означает «q--» в цикле while?Что означает эта стенография в JavaScript?

getTotal: function() { 
 
    
 
     var q = this.getItemCount(), 
 
      p = 0; 
 
    
 
     while (q--) { 
 
     p += basket[q].price; 
 
     } 
 
    
 
     return p; 
 
}

Является ли это JS стенографии? Есть ли онлайн-инструмент, который преобразует сокращенный JavaScript в longhand? Кроме того, почему vars q и p объявлены таким образом, а не определяют их следующим образом:

var q = this.getItemCount(); var p = 0;

+2

Это оператор после декремента, общий для многих языков, которые скопировали синтаксис Си. – Pointy

+0

'--' означает декрементинг. Он будет вычитать 1 из 'q' с каждым циклом. 'q -' == 'q = q-1' –

+0

[Вот удобная ссылка для выражений JavaScript.] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators) – Pointy

ответ

1

Это decrement operator. Значение q уменьшается на 1 каждый раз, когда оценивается q--, но, что важно, возвращается значение до декремент.

Итак, цикл выше будет продолжаться до q=1, но значение, используемое внутри цикла во время этой последней итерации, будет q=0.

В терминах непрофессионала: q-- означает «Дайте мне значение q, а затем уменьшите его на 1 непосредственно после».

+0

Спасибо! Имеет смысл. –

+1

В частности, 'while (q -) {...}' и 'for (; q -;) {...}' say для выполнения циклов 'q', но в цикле q может использоваться как индекс на основе нуля. Часто это оптимизация, заимствованная из C, для перемещения массива назад после инициализации 'q' до длины массива; – traktor53

0

Здесь q-- означает «вычесть 1 из q и сохранить прежнее значение q». Переменные объявляются в сокращенном методе, чтобы зарезервировать размер страницы и, следовательно, время ее загрузки.

+1

Я просто знал, что кто-то добавит целый ответ на эту тривиальную проблему xD Grtz –

+0

no, 'q-1'" возвращает "' q-1', 'q -' "возвращает" 'q' ... – dandavis

1

как вы можете сказать q переменная с числом элементов и -- является Decrement Operator он просто вычитает одну форму q до достигает 0.

Это работает, потому что в JavaScript 0 == false и вылезет из когда q достигает 0.

+0

хорошее объяснение условия выхода ... – dandavis

Смежные вопросы