js中单双引号的嵌套问题

   if(checkmethod=='isNumber'){  

     var result=eval(checkutil+'.isNumber("'+checkdata+'")' );//相当于计算UtilTest.isNumber(checkdata)  

   }else if(checkmethod=='isEnglish'){  

     result=eval(checkutil+'.isEnglish("'+checkdata+'")' );  

   }else if(checkmethod=='isEmail'){  

     result=eval(checkutil+'.isEmail("'+checkdata+'")' );  

   }else if(checkmethod=='isIP'){  

     result=eval(checkutil+'.isIP("'+checkdata+'")' );  

   }  

以上是我在网上看到的一段代码,但为了更好的说明我举两个我理解的例子:

//例子一

var data = {name:'jack',age:12};

var example = 'my name is ' + data.name  + ',my age is ' + data.age ;

//例子二

var new = "<a href=''></a>";

var div = "<div></div>"

div.html(new);

所以说我能理解用引号包裹起来字符串,能理解引号中间嵌套不同的引号,可是我不理解我最初粘贴的那段代码'checkutil+'.isNumber("'+checkdata+'")',这里面checkdata旁边为什么要同时写双引号和单引号。我是这样分析的,这里面总共有三层引号的使用,首先是最外层的单引号,然后是括号里的第一层双引号,最后是连绵的单引号。

平常写代码都是乱写,能生效就行,但是真觉得这样不太好,所以想问个明白。拜托大家啦


慕码人2483693
浏览 1009回答 1
1回答

慕田峪9158850

题主没给出&nbsp;checkutil&nbsp;和&nbsp;checkdata&nbsp;的类型,我只能以我自己的推倒来模拟:class Checker {&nbsp; &nbsp; isNumber(data) {&nbsp; &nbsp; &nbsp; &nbsp; return !isNaN(data);&nbsp; &nbsp; }}var checker = new Checker();var checkdata = "15";var checkutil = "checker";var result = eval(checkutil + '.isNumber("' + checkdata + '")');console.log(result); // 输出 true这时候&nbsp;eval&nbsp;里边的字符串是:checker.isNumber("15"),是没有任何语法错误的。我们把 checkdata 改成非单纯的数字字符串:var&nbsp;checkdata&nbsp;=&nbsp;"15abc"; //&nbsp;.... console.log(result);&nbsp;//&nbsp;输出&nbsp;false这时候&nbsp;eval&nbsp;里边的字符串是:checker.isNumber("15abc"),也是没有任何语法错误的。但是,如果我们将 eval 中的双引去掉://&nbsp;... var&nbsp;result&nbsp;=&nbsp;eval(checkutil&nbsp;+&nbsp;'.isNumber('&nbsp;+&nbsp;checkdata&nbsp;+&nbsp;')');产生异常:undefined:1checker.isNumber(15abc) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^SyntaxError:&nbsp;missing&nbsp;)&nbsp;after&nbsp;argument&nbsp;listchecker.isNumber(15abc)&nbsp;中&nbsp;isNumber&nbsp;方法的参数&nbsp;15abc&nbsp;究竟是个什么类型呢?既不是有效的字面量也不是定义过的对象。所以你知道为什么会出现语法错误了吧。双引是为了确保&nbsp;isNumber&nbsp;的参数为一个有效的对象,而双引表示的字符串一定是有效的对象。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript