因?yàn)檎Z言是動(dòng)態(tài)類型的特質(zhì),所以我們會遇到各種問題。如果不是計(jì)算機(jī)專業(yè)的童鞋。接下來討論的內(nèi)容可能會讓你感覺到很驚訝。
操作符
首先來說,操作符是一種特殊的函數(shù),在語法上或者再我們認(rèn)識的常規(guī)函數(shù)中js中運(yùn)算符的優(yōu)先級,這顯得很難以接受。
讓我們看個(gè)例子,邊看邊說:
var a=3+3;
console.log(a)//6
當(dāng)我們看到這個(gè)結(jié)果的時(shí)候,有沒有想過,JS它是怎么做到的?這個(gè)+操作符,就像有函數(shù)的功能一樣,把值給計(jì)算了。那函數(shù)是不是應(yīng)該這樣,方便我們接受?
function +(a,b){

return //把兩個(gè)數(shù)相加;
}
但是這樣的方式又和JS中的操作符使用不一致。
是這樣的,JS引擎提供了,包括其他語言提供的中綴操作符的方式。
注意
對于這些操作符,特別熟在處理動(dòng)態(tài)類型的語言js中運(yùn)算符的優(yōu)先級,我們不確定是什么類型的時(shí)候,會以自己的方式處理。我們現(xiàn)在深刻意識到操作符,它就是函數(shù)這一概念就可以。
運(yùn)算符優(yōu)先級
與數(shù)學(xué)中的加減乘除運(yùn)算一樣,的運(yùn)算符也有優(yōu)先級。用來幫助我們確定程序的先后運(yùn)行順序。
var a=1+2*3;
console.log(a);
以上是有兩個(gè)函數(shù),很明顯現(xiàn)在a是7.
如果我們:
var a=(1+2)*3;
console.log(a);
現(xiàn)在是9。括號具有最高優(yōu)先級,與我們數(shù)學(xué)中是一致的。
更詳細(xì)的查看。
關(guān)聯(lián)性
因?yàn)閖s中小于是從左到右執(zhí)行,寫下代碼:
console.log(1<2<3)
返回true,沒有問題,現(xiàn)在我們改一下代碼:
console.log(3<2<1)
同樣返回true。這就有點(diǎn)奇怪了。
讓我看看原因,根據(jù)