大家好,今天要和大家聊一聊JavaScript里到處都是¥符號(hào)的問(wèn)題。
首先,我們先來(lái)看一個(gè)問(wèn)題,當(dāng)我們使用jQuery時(shí),經(jīng)常會(huì)使用$()來(lái)獲取一個(gè)DOM元素,但是當(dāng)我們用$()來(lái)獲取一個(gè)以¥開(kāi)頭的元素時(shí),卻會(huì)出現(xiàn)一些莫名其妙的問(wèn)題。例如:
var price = $('¥10.99'); console.log(price);
這段代碼輸出的結(jié)果是一個(gè)空數(shù)組,而不是我們期待的獲取到id為10.99的DOM元素。
就算不是jQuery,我們?cè)贘avaScript中使用$作為變量名的時(shí)候,也會(huì)遇到類(lèi)似的問(wèn)題。例如:
var $price = '¥10.99'; console.log($price);
這段代碼輸出的結(jié)果也是一個(gè)¥符號(hào),而不是我們期待的10.99。
為什么會(huì)這樣呢?這是因?yàn)樵贘avaScript中,$符號(hào)是合法的變量名字符,同樣的,¥符號(hào)在JavaScipt中也是一個(gè)合法的變量名字符。
所以,當(dāng)我們?cè)谑褂?()獲取DOM元素時(shí),$被識(shí)別成了jQuery選擇器,而不是像我們期望的獲取一個(gè)DOM元素的快捷方式;當(dāng)我們用$作為變量名時(shí),$被識(shí)別成了變量名的一部分,而不是像我們期望的只是一個(gè)簡(jiǎn)短的符號(hào)。
那么,我們?cè)撊绾伪苊膺@個(gè)問(wèn)題呢?最常見(jiàn)的方法是避免在變量名中使用$符號(hào),采用其他的變量名來(lái)代替。而在獲取DOM元素時(shí),使用$(document.getElementById('id'))來(lái)代替$()也可以解決問(wèn)題,例如:
var price = $(document.getElementById('¥10.99')); console.log(price);
這樣就能成功獲取DOM元素了。
綜上所述,這個(gè)問(wèn)題的產(chǎn)生是因?yàn)樵贘avaScript中,$符號(hào)和¥符號(hào)都是合法的變量名字符,我們需要避免在變量名中使用$符號(hào),或者使用$(document.getElementByid('id'))來(lái)替代$(),以避免出現(xiàn)莫名其妙的問(wèn)題。