原因:JavaScript是一種直譯式腳本語言,其數(shù)據(jù)類型可以被忽略,當(dāng)對(duì)一個(gè)變量賦值時(shí),是不需要考慮它的類型;待變量被賦予某個(gè)值之后,才會(huì)具有某種類型。簡(jiǎn)單來說,JavaScript變量在不同的場(chǎng)合可以解釋為不同的類型。
前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
API 文檔、設(shè)計(jì)、調(diào)試、自動(dòng)化測(cè)試一體化協(xié)作工具:點(diǎn)擊使用
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
JavaScript變量與常量
學(xué)習(xí)任何一門語言都要從變量開始。變量可以被看作是一種被命名的分類容器,用于保存特定的數(shù)據(jù),數(shù)據(jù)可以具有多種形式:整數(shù)、小數(shù)、字符串或其它數(shù)據(jù)類型。JS的變量不需要事先聲明就可以直接使用,同時(shí)JS的變量可以用任何方式進(jìn)行命名,但為了方便閱讀,我們一般只是用數(shù)字、字母、美元符號(hào)和下劃線命名變量。JS的變量命名規(guī)則如下:
1)JavaScript變量在使用前不需要事先聲明,但為了防止程序在執(zhí)行時(shí)出現(xiàn)難以查找的錯(cuò)誤,我們?cè)谑褂米兞壳靶枰孪葘?duì)變量進(jìn)行聲明,其聲明方式如下
var mypetcat
2)JavaScript變量可以以任何符號(hào)進(jìn)行命名,但為了方便閱讀,通常只是用字母、數(shù)字、美元符號(hào)以及下劃線進(jìn)行命名。并且,在聲明變量時(shí)以字母開頭,且不單獨(dú)使用數(shù)字進(jìn)行變量聲明
3)JavaScript是區(qū)分大小寫的語言,變量MYPETCAT和mypetcat是不一樣的。程序員在聲明變量的時(shí)候習(xí)慣使用一種“駱駝大小寫”(或混合大小寫)的方法,也就是把單詞和短語連寫到一起,沒有空格,每個(gè)單詞的首字母大寫,但整個(gè)名稱的第一個(gè)字母可以是大寫或小寫。如MyPetCat
4)JavaScript變量的賦值方式有很多種??梢栽诼暶髯兞康臅r(shí)候直接賦值
var myPetCat=11.2
或者
myPetCat=11.2
也可以先聲明變量再進(jìn)行賦值
var myPetCatmyPetCat=11.2
5)JavaScript在聲明后即可直接進(jìn)行調(diào)用
alert(myPetCat)
6)JavaScript中的常量用Math方法進(jìn)行定義,將在后面的Math方法進(jìn)行介紹
7)JavaScript可以試用const方法聲明常量,常量一旦聲明后就不可更改
const a=1;
JavaScript數(shù)據(jù)類型
“數(shù)據(jù)類型”這個(gè)術(shù)語表示了變量包含數(shù)據(jù)的本質(zhì)特征。字符串變量包含了一個(gè)字符串,數(shù)值變量包含了一個(gè)數(shù)值,等等。JavaScript屬于“寬松類型”的編程語言,這意味著JavaScript變量在不同的場(chǎng)合可以解釋為不同的類型。
從前面的內(nèi)容中可以看出,在JavaScript中,不必事先聲明變量的數(shù)據(jù)類型就可以使用變量,這時(shí)JavaScript解釋器會(huì)根據(jù)情況做出他認(rèn)為正確的判斷。如果我們現(xiàn)在變量里保存了一個(gè)字符串,稍后又想把它當(dāng)做數(shù)值使用,這在JavaScript里是完全可行的,前提是這個(gè)字符串必須包含像數(shù)字的內(nèi)容。
1)整數(shù)
整數(shù)可以是正整數(shù)、負(fù)整數(shù)和0,如33,-100000
2)浮點(diǎn)數(shù)
與整數(shù)不同的是,浮點(diǎn)數(shù)具有小數(shù)部分,但小數(shù)部分可以為0。浮點(diǎn)數(shù)表示形式可以是3.1415926,也可以是指數(shù)形式35.4e5
在指數(shù)表示法中,e表示10的冪,利用指數(shù)表示法,可以很方便的表示特別大或者特別小的數(shù)
3)非數(shù)值(NaN)
當(dāng)腳本試圖把一些非數(shù)值數(shù)據(jù)當(dāng)數(shù)值處理時(shí),其返回值就是NaN,利用isNaN()函數(shù)能夠監(jiān)測(cè)非數(shù)值,當(dāng)輸入?yún)?shù)為非數(shù)值時(shí),返回ture;當(dāng)輸入?yún)?shù)為數(shù)值時(shí),返回false
4)parseFloat()函數(shù)
該函數(shù)解析一個(gè)字符串并返回一個(gè)浮點(diǎn)數(shù)
如果被解析的字符串的首字符是一個(gè)數(shù)字,函數(shù)會(huì)一直解析知道數(shù)字結(jié)束,然后返回一個(gè)數(shù)值而不是字符串
5)parseInt()函數(shù)
該函數(shù)與parseFloat()函數(shù)類似,返回值是整數(shù)或NaN。此外,該函數(shù)還有第二個(gè)可選參數(shù),用于指定數(shù)值的基,從而返回二進(jìn)制、八進(jìn)制或其他進(jìn)制的數(shù)值所對(duì)應(yīng)的十進(jìn)制數(shù)
6)無窮大(Infinity)
JavaScript所能表示的最大數(shù)值為2的53次方,超過該值即標(biāo)志為Infinity。此外,表示你負(fù)無窮的關(guān)鍵字為- Infinity。
利用isFinite()可以判斷一個(gè)數(shù)值是否為無窮大,當(dāng)輸入值為NaN,Infinity或- Infinity時(shí),返回false,其他情況返回ture
7)布爾值
布爾類型的數(shù)據(jù)只有兩個(gè)值:ture和false,常用與在代碼中保存邏輯操作的結(jié)果
對(duì)布爾值進(jìn)行賦值時(shí),注意不要把值包含在引號(hào)里面,如
A=ture
如果將布爾值用于計(jì)算,JS會(huì)自動(dòng)把ture轉(zhuǎn)換為1,把false轉(zhuǎn)換為0
8)“非”操作符(!)
當(dāng)操作符!位于布爾值之前時(shí),JS將它解釋為非,也就是相反的值
9)null(空)
當(dāng)我們讓變量具有有效值,卻又不是任何具體值時(shí),就把null賦值給變量。對(duì)于數(shù)值來說,null就是0,對(duì)于字符串來說,null就是””,對(duì)于布爾變量來說null表示false。
10)undefined(未定義)
undefined不是關(guān)鍵字,而是預(yù)定義的全局變量。當(dāng)某個(gè)變量已經(jīng)在語句里使用了,但沒有被賦予任何值時(shí),他的值不是0或者null,而是undefined,表示JS不能識(shí)別他
javascript弱(寬松)類型的體現(xiàn)
一般規(guī)律是,約束越強(qiáng)越不容易出錯(cuò),但編寫程序時(shí)也越麻煩。在JavaScript中,因?yàn)榧s束比較弱,所以容易出現(xiàn)這種錯(cuò)誤:最簡(jiǎn)單的例子:
var a =200; var b ="1"; var c= a + b;
你可能期望c是201,但實(shí)際上它是"2001",這個(gè)錯(cuò)誤在強(qiáng)類型語言中決不會(huì)出現(xiàn)。然而正是因?yàn)镴avaScript沒有這些約束,所以可以很方便地拼接數(shù)字和字符串類型。
【