JS中的单引号与双引号

HTML中的单引号与双引号很简单,就是两个字符实体:
显示      描述         实体名称    实体编号
" 双引号、引号 " "
' 单引号、撇号 ' '
x
 
1
显示      描述         实体名称    实体编号
2
"     双引号、引号      "      "
3
'     单引号、撇号      '      '
JS中的单引号和双引号其实没啥区别,看你自己习惯了。但若双引号中再使用双引号,我们可采取"外双内单"或者"外单内双"的格式;如果需要的是双引号本身,则只能是"外单内双":
console.log("包'青'天");    //包'青'天
console.log('包"青"天'); //包"青"天
console.log("包"青"天"); //错误
x
 
1
console.log("包'青'天");    //包'青'天
2
console.log('包"青"天');    //包"青"天
3
console.log("包"青"天");    //错误
或者像JAVA中那样,用 反斜杠\ 来禁止解析双引号:
console.log("包\"青\"天");    //包"青"天
 
1
console.log("包\"青\"天");    //包"青"天

一个容易混淆的地方

比如在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:
<input type="button" onclick="alert("弹窗")" /> -------------------不正确
 
1
<input type="button" onclick="alert("弹窗")" /> -------------------不正确
提示出错后,再漫不经心地改为:
<input type="button" onclick="alert(\"弹窗\")" /> ----------------不正确
 
1
<input type="button" onclick="alert(\"弹窗\")" /> ----------------不正确
结果还是出错。这时,我就想不通了,虽然我知道最直接的解决方法是写成这样:
<input type="button" onclick="alert('弹窗')" />  -------------------正确
<input type="button" onclick='alert("弹窗")' /> -------------------正确
"
 
1
<input type="button" onclick="alert('弹窗')" />  -------------------正确
2
<input type="button" onclick='alert("弹窗")' />  -------------------正确
但为什么JS中的转义字符 \ 没有效果了呢?

这是因为,这段代码还是归于HTML的管辖范围,所以转义字符应该使用HTML的,而不是javascript的:
<input type="button" onclick="alert(&quot;双引号&quot;);" /> -------------------正确
<input type="button" onclick="alert(&quot;双引号");" /> -------------------正确,【&quot;】和【"】没任何区别 <input type="button" onclick="alert(&apos;单引号');" /> -------------------正确
 
1
<input type="button" onclick="alert(&quot;双引号&quot;);" /> -------------------正确
2
<input type="button" onclick="alert(&quot;双引号");" /> -------------------正确,【&quot;】和【"】没任何区别
3

4
<input type="button" onclick="alert(&apos;单引号');" /> -------------------正确

小结

注意,以下任何错误都不会对HTML解析造成影响,只是会影响JS功能(即不会执行alert方法)
<input value="外双引号内双引号-错误" type="button" onclick="alert("OK");" />
<input value="外单引号内单引号-错误" type="button" onclick='alert('OK');' />
<input value="反斜杠\+双引号-错误" type="button" onclick="alert(\"OK\");" />
<input value="反斜杠\+单引号-错误" type="button" onclick='alert(\'OK\');' /> <input value="连续两个双引号-错误" type="button" onclick='alert(""OK"");' />
<input value="连续两个单引号-错误" type="button" onclick="alert(''OK'');" /> <input value="外双引号内单引号-OK" type="button" onclick="alert('OK');" />
<input value="外单引号内双引号-OK" type="button" onclick='alert("OK");' />
<input value="外部不使用任何引号-OK" type="button" onclick=alert('OK'); />
<input value="外部不使用任何引号-OK" type="button" onclick=alert("OK"); />
11
 
1
<input value="外双引号内双引号-错误" type="button" onclick="alert("OK");" />
2
<input value="外单引号内单引号-错误" type="button" onclick='alert('OK');' />
3
<input value="反斜杠\+双引号-错误" type="button" onclick="alert(\"OK\");" />
4
<input value="反斜杠\+单引号-错误" type="button" onclick='alert(\'OK\');' />
5

6
<input value="连续两个双引号-错误" type="button" onclick='alert(""OK"");' />
7
<input value="连续两个单引号-错误" type="button" onclick="alert(''OK'');" />
8

9
<input value="外双引号内单引号-OK" type="button" onclick="alert('OK');" />
10
<input value="外单引号内双引号-OK" type="button" onclick='alert("OK");' />
11
<input value="外部不使用任何引号-OK" type="button" onclick=alert('OK'); />
12
<input value="外部不使用任何引号-OK" type="button" onclick=alert("OK"); />
2018-4-15

JS 和 HTML 中的单引号与双引号的更多相关文章

  1. js、html中的单引号、双引号及其转义使用

    js.html中的单引号.双引号及其转义使用在js中对相关字符做判断或取值的时候很多情况下都会用到这些. ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:<in ...

  2. javaScript中的单引号与双引号

    javaScript中的单引号与双引号没有什么区别.但因为xhtml规范要求所有xhtml属性要用双引号括起来.所以在javaScript中使用单引号. var html = '<h2 clas ...

  3. JS中的单引号和双引号

    JS里面的单引号和双引号可以同时使用,但是要遵循一定的准则. 最外面用了双引号了,那么里面就不能再用双引号了,因为引号是成双对的,浏览器读到一个双引号后,到第2个双引号时才算结束:同理,浏览器读到一个 ...

  4. Js参数值中含有单引号或双引号解决办法

    <script type="text/javascript"> function Display(LoginEmail, UserName, ID) {         ...

  5. java中的单引号和双引号

    1.单引号引的数据 是char类型的,双引号引的数据 是String类型的:单引号只能引一个字符,而双引号可以引0个及其以上.char只是一个基本类型,而String 可以是一个类,可以直接引用.比如 ...

  6. linux shell中,单引号、 双引号,反引号(``),$()的区别

    一.单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题. 空格在linux中时作为一个很典型的分隔符,比如 string1=this is a string,这样执行会报错.为了避免这 ...

  7. linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)

    tips: ============================= IFS - LINUX字段分隔符,内部字段分隔符 IFS(Internal Field Seperator)在Linux的she ...

  8. php中的单引号、双引号和转义字符

    PHP单引号及双引号均可以修饰字符串类型的数据,如果修饰的字符串中含有变量(例$name):最大的区别是: 双引号会替换变量的值,而单引号会把它当做字符串输出. 例如: <?php        ...

  9. php中的单引号与双引号详解

    一.引号定义字符串 在Php中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes'"I am a string in double qu ...

随机推荐

  1. gp数据库运维

    最近需要将一份db2导出的历史数据入库gp集群,然后把每天的增量数据导出成txt文件和对应的log日志,再ftp传输给另外一台机器.其中陆续碰到一些坑,在此记录 历史文件数据清洗 列分隔符的选择 碰到 ...

  2. ArrayList源码中EMPTY_ELEMENTDATA和DEFAULTCAPACITY_EMPTY_ELEMENTDATA的区别

    2018年7月22日09:54:17 JDK 1.8.0_162 ArrayList源码中EMPTY_ELEMENTDATA和DEFAULTCAPACITY_EMPTY_ELEMENTDATA的区别 ...

  3. 机器学习之路: python 支持向量机 LinearSVC 手写字体识别

    使用python3 学习sklearn中支持向量机api的使用 可以来到我的git下载源代码:https://github.com/linyi0604/MachineLearning # 导入手写字体 ...

  4. 分分钟搞定Python之排序与列表

    排序时程序中用得比较多的方法了.在Python中,最简单的排序方法摸过与使用内置的sorted(list)这个函数了,该函数一一个列表作为参数返回一个新的列表,只不过是把旧列表中的元素排过序了.原列表 ...

  5. POJ2104 K-th Number 不带修改的主席树 线段树

    http://poj.org/problem?id=2104 给定一个序列,求区间第k小 通过构建可持久化的点,得到线段树左儿子和右儿子的前缀和(前缀是这个序列从左到右意义上的),然后是一个二分的ge ...

  6. BZOJ.2125.最短路(仙人掌 圆方树)

    题目链接 圆方树.做题思路不写了.. 就是当LCA是方点时跳进那个环可以分类讨论一下用树剖而不必须用倍增: 如果v是u的(唯一的那个)重儿子,那么u的DFS序上+1的点即是要找的:否则v会引出一条新的 ...

  7. 证明自己吧--------Writeup

    原题:http://www.shiyanbar.com/ctf/28 下载一个压缩包,里面有个CrackMe1.exe,查看了下,没有壳. 直接拖到ida去反汇编 一进来就是在main里面,直接F5看 ...

  8. Netdata----Linux 性能实时监测工具

    https://my-netdata.io/ https://github.com/firehol/netdata/wiki http://soluck.iteye.com/blog/2291618

  9. what is a process?

    A process is a program in execution. A process is more than the program code, which is sometimes kno ...

  10. datagrid在MVC中的运用08-实现Master-Detail(使用子datagrid)

    本文主要通过一个子datagrid来实现主次表.谢谢Kevin的博文. 代码部分与http://www.cnblogs.com/darrenji/p/3576258.html相似,这里只列出不一样的地 ...