2015-06-25 3 views
0

Я пытаюсь научиться JS из книги (начальный JavaScript Джереми Макпик), но я застрял с этим кодом:JavaScript для начинающих проблемы с кавычками

<script> 
var myString = "56.02 degrees centigrade"; 

document.write("\"" + myString + "\" is " + parseInt(myString, 10) + 
" as an integer" + "<br/>"); 
</script> 

Результат в HTML заключается в следующем: "56.02 degrees centigrade" is 56 as an integer.

Что я не понимаю, в книге не объяснено - почему этот код написан так, как есть? Может ли кто-нибудь объяснить объяснения непрофессионала, почему мы начинаем с "\"" (почему не просто \", так как это escape-последовательность для двойных кавычек), почему после этого нам нужно написать "\" (не должно быть \", если мы хотим закрыть кавычки для myString), и почему это написано после этого: is "? По сути, эта первая часть меня действительно смутила.

+1

У вас действительно есть эти символы '*' в коде? – Barmar

+1

Вы можете использовать '' '* или *' '' в качестве строкового литерала в JavaScript. Поэтому '' \ "" 'можно записать как' '' ''. Если он * был * записан как '" "" ' что будет путать парсинг JavaScript - где заканчивается строка * на самом деле? ('' "" 'будет анализироваться как два токена -' '' ',' '' - и, следовательно, недопустимый синтаксис.) escape-символ ('\\') говорит: «quote * не заканчивает * строку, включите его как символ цитаты * в строку *. Это будет охватываться любым [хорошим] учебником. – user2864740

+0

«У вас действительно есть эти символы в коде?» Конечно, нет, извините - первый пользователь, я просто пытался подчеркнуть эту первую часть кода, согласно руководству. – pilgrim011

ответ

3

В Javascript (и большинстве других языков) вы пишете строку, помещая последовательность символов между двумя символами кавычек. Таким образом, строка, содержащая abc записывается в виде

"abc" 

Если вы хотите, один из символов в строке, чтобы быть кавычку, вы должны избавиться от нее, так что это не будет рассматриваться как конец строки , Таким образом, строка, содержащая abc"def будет записана как:

"abc\"def" 

Это показан в коде, где он имеет

"\" is " 

Это строка, которая начинается с буквальной цитатой со словом is.

Если вы хотите строку, содержащую только в кавычки, вам нужно поставить сбежавшего цитату между кавычками, которые указывают, что вы пишете строку:

"\"" 

Вот что в начале выражение конкатенации в вашем коде.

Если вы только что написали

\" 

что бы беглый цитаты. Но так как это не внутри кавычек, это не строка - это недействительный синтаксис для чего-либо.

В Javascript есть еще один вариант. Он позволяет использовать одиночные и двойные кавычки для окружения строки.Так что если у вас есть строка, содержащая двойные кавычки, вы можете поместить его в одинарные кавычки:

'"' 

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

"This is Barry's answer" 
+0

Это очень приятное объяснение. Мне нравится, как он основывается на основных принципах, добавляя кусочки знаний с каждым шагом. – joshreesjones

1

myString - это строка. Функция parseInt (string, radix) будет анализировать строку как целое число (see this for more examples).

Кавычки являются такими, какими они являются, чтобы на выходе отображались кавычки. Если вы не хотите, котировки в выходе на JS может быть упрощена:

document.write(myString + " is " + parseInt(myString, 10) + " as an integer" + "<br/>"); 

, но это не будет столь же ясно показывает, как работает ParseInt.

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