2016-11-09 3 views
-2

Мне нелегко следовать этой концепции. Точка функции состоит в том, чтобы она приняла 2 параметра и проверила, является ли параметр target концом параметра str.Что делает (-'string'.length) в Javascript

end('Sebastion', 'ion') Так вернется true и end('Sebastion', 'eon') вернуться бы false

Я нашел это решение, и не понимают, что -target.length делает и как соответствие, что цель является тестирование параметров.

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

function end(str, target) { 
    return (str.substr(-target.length) === target); 
} 
+2

Новое или нет, чтение [документации] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr) всегда полезно. – Teemu

+0

Вы попробовали? Вы читали документ? –

+0

Я прочитал документацию, иначе я бы не стал переполняться для генерала, «что это делает?» вопрос из-за комментарии как ваш. Я просто все еще не понимал, что он делает после прочтения объяснений. – Derrick

ответ

0

Оцените str.substr(-target.length).

Следуя rules of precedence, нам необходимо сначала оценить -target.length.

Снова следуя правилам приоритета, сначала оцениваем target.length. Мы делаем это, потому что «Access Access» находится в верхней части таблицы приоритетов. В вашем примере это будет 3.

Отклоните это, чтобы получить -3.

Итак, теперь мы должны оценить результат str.substr(-3):

substr функция JavaScript имеет это в этом documentation on MDN:

старт: Место, с которого начинается извлечение символов. Если дано отрицательное число, оно обрабатывается как strLength + start, где strLength - длина строки (например, если start = 3, она обрабатывается как strLength - 3.)

Если начало отрицательное, substr() использует его как индекс символа от конца строки. Если начало отрицательно и abs (начало) больше длины строки, substr() использует 0 в качестве начального индекса. Примечание: описанная обработка отрицательных значений аргумента начала не поддерживается Microsoft JScript.

Таким образом, он принимает окончательные 3 символа исходной строки.

+0

Это имеет смысл. Спасибо. – Derrick