亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js中單雙引號的嵌套問題

js中單雙引號的嵌套問題

慕碼人2483693 2018-10-17 13:14:55
   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旁邊為什么要同時寫雙引號和單引號。我是這樣分析的,這里面總共有三層引號的使用,首先是最外層的單引號,然后是括號里的第一層雙引號,最后是連綿的單引號。平常寫代碼都是亂寫,能生效就行,但是真覺得這樣不太好,所以想問個明白。拜托大家啦
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

題主沒給出 checkutil 和 checkdata 的類型,我只能以我自己的推倒來模擬:

class Checker {

    isNumber(data) {

        return !isNaN(data);

    }

}


var checker = new Checker();

var checkdata = "15";

var checkutil = "checker";

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


console.log(result); // 輸出 true

這時候 eval 里邊的字符串是:checker.isNumber("15"),是沒有任何語法錯誤的。
我們把 checkdata 改成非單純的數字字符串:

var checkdata = "15abc";
// ....
console.log(result); // 輸出 false

這時候 eval 里邊的字符串是:checker.isNumber("15abc"),也是沒有任何語法錯誤的。

但是,如果我們將 eval 中的雙引去掉:

// ...
var result = eval(checkutil + '.isNumber(' + checkdata + ')');

產生異常:

undefined:1checker.isNumber(15abc)
                 ^^SyntaxError: missing ) after argument list

checker.isNumber(15abc) 中 isNumber 方法的參數 15abc 究竟是個什么類型呢?既不是有效的字面量也不是定義過的對象。所以你知道為什么會出現語法錯誤了吧。
雙引是為了確保 isNumber 的參數為一個有效的對象,而雙引表示的字符串一定是有效的對象。


查看完整回答
反對 回復 2018-11-29
  • 1 回答
  • 0 關注
  • 1042 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號