This article needs attention from an expert on the subject.(August 2007)
A nested quotation is a quotation that is encapsulated inside another quotation, forming a hierarchy with multiple levels. When focusing on a certain quotation, one must interpret it within its scope. Nested quotation can be used in literature (as in nested narration), speech, and computer science (as in "meta"-statements that refer to other statements as strings). Nested quotation can be very confusing until evaluated carefully and until each quotation level is put into perspective.
In languages that allow for nested quotes and use quotation mark punctuation to indicate direct speech, hierarchical quotation sublevels are usually punctuated by alternating between primary quotation marks and secondary quotation marks. For a comprehensive analysis of the major quotation mark systems employed in major writing systems, see Quotation mark.
eval("var a=3; alert();");
This code declares a variable a, which is assigned the value 3, and a blank alert window is popped up to the user.
Nested strings (level 2)
alert("I don't need to escape here"); alert('Nor is it "required" here'); alert('But now I do or it won\'t work');
Nested strings (level 3 and beyond)
Furthermore, (unlike in the literature example), the third-level nested quote must be escaped in order not to conflict with either the first- or second-level quote delimiters. This is true regardless of alternating-symbol encapsulation. Every level after the third level must be recursively escaped for all the levels of quotes in which it is contained. This includes the escape character itself, the backslash (“\”), which is escaped by itself (“\\”).
For every sublevel in which a backslash is contained, it must be escaped for the level above it, and then all the backslashes used to escape that backslash as well as the original backslash, must be escaped, and so on and so forth for every level that is ascended. This is to avoid ambiguity and confusion in escaping.
Here are some examples that demonstrate some of the above principles:
document.write("<html><head></head><body><p>Hello, this is the body of the document."); document.writeln("</p>"); document.write("<p>A newline in HTML code acts simply as whitespace, whereas a <br> starts a new line."); document.write("</p></body></html>\n"); eval('eval(\"eval(\\\"alert(\\\\\\\"Now I\\\\\\\\\\\\\\\'m confused!\\\\\\\")\\\")\")');
Note that the number of backslashes increase from 0 to 1 to 3 to 7 to 15, indicating a 2^n-1 rule for successively nested symbols.