JS中单引号和双引号嵌套传参的问题

1、首先从本质上来说你在js或者jquery中使用单引号或者双引号是没有区别的,都可以成功被解析,但是关键在于有很多场景我们进行字符串拼接时会同时使用单引号和双引号这个时候要遵循一个原则:要成对嵌套使用,外层用单引号里面就用双引号,外层用双引号里面就用单引号

2、传参问题,如果你传递的参数仅仅是一个非字符型的变量的话按正常的写法不会有什么问题,但是我的一个需求如下,

JS中单引号和双引号嵌套传参的问题

我要在一段动态生成的html代码中,向一个点击事件函数传入一整段字符串,这里的dataString是后台传过来的一个list集合中的某一项 

JS中单引号和双引号嵌套传参的问题

 这个对象被我转成JSON的字符串形式传递到函数中,执行效果如下

JS中单引号和双引号嵌套传参的问题

 报错说你的拼接有问题,你如果去看element里的元素会发现,参数进来了但是解析错误

JS中单引号和双引号嵌套传参的问题 

 这个对象已经被转成JSON字符串传到函数里面,但是并没有把它解析为一个整体变量,因为我们在拼接的时候外面使用的是单引号里面使用的双引号,最后变量加载处用的是单引号,见第一张图,

3、下面我们换一种方式,外层用双引号里面用单引号,变量拼接处用双引号,如下所示

JS中单引号和双引号嵌套传参的问题 

成功执行并没有报错,查看element如下: 

JS中单引号和双引号嵌套传参的问题

 这里已经把它解析为变量了,上面不成功的时候字符串显示是黄色的,现在这里已经变为蓝色,我们就可以在函数中执行通过data.属性拿到这个对象对应的所有属性,如下所示

JS中单引号和双引号嵌套传参的问题 

总结:要传递一整个字符串对象时,外层要用双引号,里面用单引号,变量拼接处肯定使用的是双引号,就可以成功拿到变量