HTML中撇号有特殊含义吗?这段ASCII输出JS代码为何报错?
问题解答
1. 代码报错的核心原因
你遇到的语法错误和HTML的撇号特性无关,完全是原文排版引入的语法污染:
你代码三元表达式里的’是排版工具自动生成的智能弯引号,不属于JavaScript支持的合法语法字符,JS解析器无法识别这个字符,直接抛出Uncaught SyntaxError: Invalid or unexpected token错误。
原作者的代码在这里本来的写法是两个半角直单引号''(空字符串),三元表达式的完整逻辑是:
- 当
i%32结果不为0(也就是当前字符不是第0、32、64...个ASCII字符)时,输出空字符串 - 当
i%32结果为0时,输出<p>标签,实现每32个字符换行换块的排版效果
2. HTML中单引号的特殊含义
半角直单引号'在HTML里确实有特殊作用:可以作为HTML标签属性值的包裹符,比如<div class='box'></div>是完全合法的写法,和双引号包裹属性值的效果一致。但这个特性和你本次遇到的报错没有关联。
修复后的可用代码
<html> <body> <style type="text/css">p {float: left; padding: 0 15px; margin: 0; font-size: 80%;}</style> <script type="text/javascript"> for (var i=0; i<128; i++) document.writeln ((i%32?'':'<p>') + i + ': ' + String.fromCharCode (i) + '<br>'); </script> </body> </html>
内容的提问来源于stack exchange,提问作者Jaocek
相关产品推荐
相关产品推荐

