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. Java 内存模型基础

    一.并发编程模型的两个关键问题 1. 线程之间如何通信 通信是指线程之间以何种机制来交换信息. 在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递. 在共享内存的并发模型里,线程之间共享程序 ...

  2. 深度学习基础系列(五)| 深入理解交叉熵函数及其在tensorflow和keras中的实现

    在统计学中,损失函数是一种衡量损失和错误(这种损失与“错误地”估计有关,如费用或者设备的损失)程度的函数.假设某样本的实际输出为a,而预计的输出为y,则y与a之间存在偏差,深度学习的目的即是通过不断地 ...

  3. JFinal 3.3 学习 -- JFinalConfig (配置web项目)

    开篇  概述 基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置. JFinalConfig子类需要实现六个抽象方法,如下所示: publ ...

  4. Openstack-开发基础 stevedore学习

    在给openstack-N版加路由的时候发现怎么都无法搞定,原来现在用这个模块来处理了 stevedore是用来实现动态加载代码的开源模块.它是在OpenStack中用来加载插件的公共模块.可以独立于 ...

  5. Python 面向对象编程——继承和多态

    <基本定义>     在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超 ...

  6. [SPOJ-LCS]Longest Common Substring

    题目大意: 求两个字符串的LCS. 思路: 对其中一个字符串构建SAM,然后用另一个字符串在里面匹配,按照SAM的边一直往下走,匹配到的连续的字符数就是公共字串的长度. #include<str ...

  7. 监控 Linux 系统的 7 个命令行工具

    监控 Linux 系统的 7 个命令行工具: " 深入 关于Linux最棒的一件事之一是你能深入操作系统,来探索它是如何工作的,并寻找机会来微调性能或诊断问题.这里有一些基本的命令行工具,让 ...

  8. 【BZOJ】1415: [Noi2005]聪聪和可可【期望】【最短路】【记忆化搜索】

    1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2335  Solved: 1373[Submit][Stat ...

  9. Remove-Invalid-Parentheses-题解

    题意 Remove the minimum number of invalid parentheses in order to make the input string valid. Return ...

  10. 升级Tornado到4后weibo oauth登录不了

    把 Tornado 升级到4后,发现正常运行的微博登录不可以了. 原因是4已经移除 RequestHandler.async_callback and WebSocketHandler.async_c ...