发布网友 发布时间:2022-07-20 02:31
共1个回答
热心网友 时间:2023-10-18 14:32
字面上来说,单引号也是,但是做前端的同仁不会这样考虑问题。
首先,onclick=,其后面的引号中应该是完整的js代码,那么在此之中的所有代码都会转到js的语境下处理,放进去的单/双引号也如此(多说一句,单/双引号括起来的表示字符串常量,没有单/双引号则表示双引号内其他处的变量)。
既然在js的语境下,那么用双引号也是可以表示字符串常量的,那么我们就试着把双引号内的单引号换成双引号,好了,问题来了,在此处到双引号外部为止都是处在html语境下,html语境下的四个双引号,就把onclick的js表达式切成了两部分,于是js被切开,报错。
单引号的引入,让html语境下的js代码部分,在通过双引号转移到js语境之后,任然可以被识别为引号,事实上就是为了解决2中引号内还有引号的问题。
ps:转义的原意,是为了在HTML语境下转义,而非js语境下。经过转换后,在js语境下就任然是双引号,可以被js解释器来处理。甚至可以是4个双引号全换为单引号,只要把中间的两个单引号转义,结果依然是一样的。那么这就不必要问引号是否是html实体这样的问题了。
不知道这样回答有否帮到题主。