JS是一種動態(tài)類型以及弱類型的語言娇斩。
就是指變量的數(shù)據(jù)類型可以再在序的執(zhí)行過程中發(fā)生變化窗轩。
變量在申明的時候不需要指定數(shù)據(jù)類型。變量的類型是根據(jù)保存的數(shù)據(jù)決定的敦第。數(shù)據(jù)類型
基本數(shù)據(jù)類型
數(shù)字型
字符串型
布爾型:true false
符合數(shù)據(jù)類型
對象類型
特殊數(shù)據(jù)類型
null:null
undefined:undefined
為什么要分這么多的數(shù)據(jù)類型争群?
為了優(yōu)化內(nèi)存number類型
數(shù)字型分為兩種回怜,一種叫做整數(shù)型,一種叫做浮點型(小數(shù))
其他語言來說换薄,嚴格區(qū)分整數(shù)型與浮點型玉雾,JS不一樣,JS里面嚴格意義來說沒有整數(shù)型轻要,整數(shù)是使用浮點型保存的复旬。
浮點數(shù)本身具有不精確性,所以使用浮點數(shù)的計算要小心冲泥。
64位
第一位:符號位 0整數(shù) 1負數(shù)
從第二位到第十二位:指數(shù)位
從第三位到64位:精度位
JS里面能夠準確的表示15位的整數(shù)驹碍。
Math.pow()實現(xiàn)數(shù)學的次方運算
第一個參數(shù)是基數(shù)。
第二個參數(shù)是次方凡恍。
例如:Math.pow(2,4) = 16;
Math.random(); //隨機數(shù)
JS可以通過兩個量獲取出來JS數(shù)字的最大值與最小值志秃。
常量:就是不會發(fā)生變化的量
Number.MAX_VALUE
Number.MIN_VALUE
= 全解
= :賦值號
== :判斷符號,返回的是一個布爾值嚼酝,判斷兩邊數(shù)據(jù)的值是否相等浮还。
===:全等判斷,返回的也是一個布爾值闽巩,但是判斷的是而兩邊數(shù)據(jù)的值以及數(shù)據(jù)的類型是否一致钧舌。科學計數(shù)法
1.1234*10^4=11234
JS里面的規(guī)則是當小數(shù)點后面的數(shù)字超過21位的時候會自動轉(zhuǎn)換為科學計數(shù)法担汤。當小數(shù)點后面的0大于5個的時候也會自動轉(zhuǎn)化為科學計數(shù)法
- infinity
infinity 無窮大
-infinity 無窮小
無窮大等于無窮大
無窮大計算的時候也遵循無窮原則
Infinity – infinity = NaN
7.NaN :not a number 不是一個數(shù)字
但是NaN是數(shù)字類型。Typeof NaN:number
NaN 不等于 NaN
什么時候會產(chǎn)生NaN洼冻?
基本上就是數(shù)學計算出錯的時候崭歧。
所以看到NaN就要檢查自己的代碼。
8.進制表示法
類型前綴
0b前綴表示二進制 0b0101010101
0o前綴表示八進制 0o2131212151
0x前綴表示十六進制 0xff212
0前綴表示10進制碘赖,默認的是10進制
9.parseInt 格式化一個字符串轉(zhuǎn)化為整形。
從左向右依次轉(zhuǎn)化外构,直到遇到不是數(shù)字的字符停止普泡,包括小數(shù)點。
如果轉(zhuǎn)化的是一個純字符串或者第一位不是數(shù)字审编,那么返回的結(jié)果就是NaN撼班。
也可以將小數(shù)轉(zhuǎn)化為整數(shù),沒有四舍五入垒酬,小數(shù)部分直接舍棄砰嘁。
第一個參數(shù)是字符串或者數(shù)字,就是要被轉(zhuǎn)化的量勘究。
第二個參數(shù)是進制數(shù)(2矮湘,4,8口糕,16缅阳,32)。不能大于32景描。表示前面的數(shù)字或者量是按照這個進制表示的十办。
parseInt(‘0101101001,2)表示前面的數(shù)字是二進制數(shù)。
10.parseFloat ( ) 將字符串轉(zhuǎn)化為浮點型或者將數(shù)字轉(zhuǎn)化為浮點型超棺。
如果要轉(zhuǎn)化的數(shù)字是一個整數(shù)向族,并且沒有傳遞第二個參數(shù),那么結(jié)果還是這個整數(shù)棠绘。
11.NaN 不等于NaN的件相,同時NaN也不等于任何數(shù)。
if(a){
console.log(‘is NaN’);
}else{
console.log(‘is not NaN’);
}
isNaN:判斷某一個量是不是NaN氧苍,如果是返回true适肠,如果不是返回false。Lse
12.isFinite 判斷一個數(shù)字是否有限的候引。
如果是準確的數(shù)字侯养,那么返回true,
如果是NaN澄干,或者Infinity或者-Infinity返回的false逛揩。
13.Boolean布爾值
里面只有兩個值柠傍,一個是true 真,一個false假辩稽,
也可以理解成數(shù)學里面的0和1的關系惧笛。
他描述的關系是否非此即彼的關系。
常用與判斷逞泄,返回的都是布爾值患整。
14.取反符號 ( !)
改變布爾值的真假喷众,取相反的意思各谚。
如果使用了!那么返回的值一定是一個布爾值到千。
15.布爾值的轉(zhuǎn)化昌渤。
null
null數(shù)據(jù)類型只有一個值,就是nullundefined
undefined數(shù)據(jù)類型也是由一個值憔四,就是undefined
undefined的產(chǎn)生分為四種情況一個申明了未賦值的變量就是undefined
函數(shù)的參數(shù)沒有傳遞的時候膀息,函數(shù)的內(nèi)部使用的時候就是undefined。
函數(shù)沒有返回值了赵,但是調(diào)用函數(shù)結(jié)果的時候潜支,這個結(jié)果是undefined。
‘function add(a,b){
console.log(a+b);
}
console.log(add(1+3));
- 對象的某一個屬性沒有賦值柿汛。
- null與dundefined的區(qū)別
大部分情況下毁腿,null與undefined是一個意思,
只有在轉(zhuǎn)化為數(shù)字的時候不一樣苛茂,
console.log(Number(null)); //0
console.log(Number(undefined)); //NaN
語義上理解已烤,null表示空,沒有東西妓羊,undefined表示未定義胯究。
- 對象 ????
20.字符串
定義:定義一個字符串,必須要使用引號躁绸,單引號與雙引號都可以裕循。但是引號不能嵌套同一種引號。
引號不能包含同一個類型的引號净刮,但是可以包含不通類型的引號剥哑。但是可以使用轉(zhuǎn)義字符實現(xiàn)同類包含。
注意:字符串定義的時候只能在一行定義淹父,不能敲換行符號株婴。但是可以使用轉(zhuǎn)義字符后面直接加回車,不能加空白字符換行。換行之后的字符串也要頂格寫困介。
轉(zhuǎn)移字符(\):作用就是改變后面字符原來的意思大审。
var sd = ‘hhahsadfh\’ sha fsdf ‘;
- 字符串與數(shù)組
length 的屬性:知道數(shù)組內(nèi)部具有多少個元素。
var al=[ 1,2,3,4,5,6,7,99]; 8
al . length = 8;
al[7] = 99
al[ length-1 ] =99
字符串和數(shù)組一樣也就要有一個length的屬性座哩,這個屬性表示的是字符串的長度徒扶。包括空白字符。
字符串也可以通過下標的方式獲取出某一個位置的字符根穷。
便利字符串:for循環(huán)
for(var i=0; i<str.length;i++){
console.log(str[i]);
}
- 彈窗
alert() 提示框 屬于 BOM
系統(tǒng)函數(shù)以及用戶直接定義的函數(shù)都是屬于window對象的姜骡。
而window對象是屬于BOM的頂層對象。Document是DOM頂層對象屿良。
confirm:確認彈窗圈澈,當點擊確認的時候返回的結(jié)果是true,點擊取消的守返回的是false管引。直接關閉也是false士败。
confirm 一般用于判斷里面闯两,確認之后的操作是否執(zhí)行褥伴。
prompt ( ) 獲取用戶的輸入。
返回的是用戶輸入的內(nèi)容漾狼,但是這個內(nèi)容是字符串類型的重慢。
練習: 計算用戶確認開始計算之后,用戶輸入的兩個數(shù)字的和逊躁。
提示:用戶確認開始計算: confirm
用戶輸入的數(shù)字: prompt
window.onload = function(){
var bool = confirm('請是否開始計算');
//錯誤處理思維:在程序中只處理錯誤似踱。
if(bool != true){
alert('不算拉倒');
return false;
}
var a = parseInt(prompt('請輸入第一個數(shù)字'));
//a是個字符串 isNaN 是判斷是不是NaN
while(isNaN(a)){
a = parseInt(prompt('請再次輸入第一個數(shù)字'));
}
var b = parseInt(prompt('請輸入第二個數(shù)字'));
while(isNaN(b)){
b = parseInt(prompt('請再次輸入第二個數(shù)字'));
}
//prompt獲取到的一定是一個字符串
alert(a+'+'+b+'結(jié)果是:'+(a+b));
};