js 输出<div class='abc'>为什么需要转义呢?

JavaScript040

js 输出<div class='abc'>为什么需要转义呢?,第1张

在JS中,双引号和单引号都可以引领字符串,效果相同,也可相互嵌套。但如果你使用document.write("<div class="abc"></div>")的话,其实里面有两个字符串,一个是<div class=,一个是></div>(按照首先匹配的双引号来判断),而abc则不被当成字符串来读取。可以把class的双引号换成单引号,document.write("<div class='abc'></div>")这样就可以正常输出,或者将class的双引号转义输出,让浏览器自己去判断,如document.write("<div class=\"abc\"></div>")的话其实其实里面就只有一个字符串,即<div class="abc"></div>

js里面的单引号和双引号在jquery或者js中拼接字符串时是没有区别的,都可以被成功解析成字符串。从代码编译的角度说的话,单引号在JS中被浏览器(IE,Chrome,Safari)编译的速度更快(在FireFox中双引号更快)。

而且单引号和双引号可以混合使用,但混合使用时需要注意。情况一般出现在js拼接字符串里面,或者html元素的属性里面:单引号和双引号必须成双成对的出现,可以单引号在外面,也可以双引号在外面:

var a="'你好'"//这里变量a的内容就是字符串'你好',这里的单引号也是字符串的一部分

var b='"你好"'//这里变量b的内容就是字符串"你好",这里的双引号也是字符串的一部分

console.info(a===b)//输出false,它们不是一样的字符串

扩展资料:

单引号和双引号使用的几种情况

1、如果在引号里面使用相同的引号,需要用 \ 转义。

单引号转义为\'

单引号转义为\"

2、单引号和双引号之间的字符串可以相加

'af'+"bvvv"+'dd'

输出 "afbvvvdd"

3、单引号也是字符串的一部分

"<div class='con"+"tent'></div>"

输出 "<div class='content'></div>"