數(shù)據(jù)類型
Undefined/Null/Boolean/Number/String五種簡單數(shù)據(jù)類型。
使用typeof操作符可以返回變量或操作數(shù)的類型說明字符串:
字符串 | 含義 |
---|---|
undefined | 值未定義 |
boolean | 值是布爾值 |
string | 值是字符串 |
number | 值是數(shù)值 |
object | 值是對象或null |
function | 值是函數(shù) |
Undefined類型(只有一個(gè)值undefined)
使用var聲明變量但未初始化時(shí)此變量的值就是undefined煎楣。
Null類型(只有一個(gè)值null)
null值表示一個(gè)空對象指針豺总,故使用typeof檢測是返回object。
一般聲明變量用于保存對象時(shí)初始化為null择懂,另外喻喳,null == underfined的操作返回true。
Boolean類型(true和false)
存在函數(shù)Boolean(變量名)困曙,轉(zhuǎn)換規(guī)則:
數(shù)據(jù)類型 | 轉(zhuǎn)為true | 轉(zhuǎn)為false |
---|---|---|
String | 任何非空字符串 | 空字符串 |
Number | 任何非零數(shù)字值 | 0和NaN |
Object | 任何對象 | null |
Undefined | not applicable(n/a) | undefined |
Boolean | true | false |
Number類型(整數(shù)和浮點(diǎn)數(shù))
十進(jìn)制
八進(jìn)制第一位為0表伦,然后是0-7谦去,超出范圍則當(dāng)十進(jìn)制。嚴(yán)格模式下八進(jìn)制無效
十六進(jìn)制以0x開頭
- 不要以浮點(diǎn)數(shù)運(yùn)算結(jié)果作為判斷條件蹦哼,因?yàn)橛?jì)算精度存在誤差
- 內(nèi)存限制哪轿,存在數(shù)值范圍,超出范圍則為Infinity或-Infinity翔怎,即正負(fù)無窮窃诉。
- NaN:任何數(shù)值除以0返回NaN,NaN不等于任何值赤套,不等于自身飘痛。isNaN(變量名)不能轉(zhuǎn)換為數(shù)值則為真。
- 數(shù)值轉(zhuǎn)換函數(shù):Number(變量)/parseInt(變量容握,可選用于指定進(jìn)制基數(shù))/parseFloat(變量)分別有具體的轉(zhuǎn)換規(guī)則宣脉。
String類型
toString()方法。
Object類型
Object的每個(gè)實(shí)例對象存在的屬性和方法:
Constructor | 保存著用于創(chuàng)建當(dāng)前對象的函數(shù)剔氏。 |
hasOwnProperty(propertyName) | 檢查給定的屬性在當(dāng)前實(shí)例對象中是否存在 |
isPrototyOf(object) | 檢查傳入的對象是否是另一個(gè)對象的原型 |
propertyIsEnumerable(propertyName) | 檢查給定的屬性是否能夠作為for-in語句來枚舉 |
toLocaleString() | 返回對象的字符串表示塑猖,該字符串與執(zhí)行環(huán)境的地區(qū)對應(yīng) |
toString() | 返回對象的字符串表示 |
valueOf() | 返回對象的字符串、數(shù)值或布爾值 |
操作符
一元操作符(只操作一個(gè)值)
- 遞增和遞減谈跛,其實(shí)和c一樣吧
- 一元加和減 羊苟,用于算術(shù)運(yùn)算或轉(zhuǎn)換數(shù)據(jù)類型
- 位操作符:按位非(操作數(shù)的復(fù)值減一)~、按位與&感憾、按位或|蜡励、按位異或^、左移<<阻桅、有符號的右移>>(保留符號位)凉倚、無符號的右移>>>
- 布爾操作符:邏輯非、邏輯與嫂沉、邏輯或
例如邏輯非對應(yīng)的規(guī)則 | 結(jié)果 |
---|---|
alert(!false) | false |
alert(!"string") | false |
alert(!"") | true |
alert(!0) | true |
alert(!123456) | false |
alert(!NaN) | true |
- 乘性操作符:加減乘除
- 關(guān)系操作符
- 相等操作符
- 條件操作符
- 賦值操作符
- 逗號操作符
(以上這些操作符一般都有對應(yīng)的規(guī)則)
語句
- if語句
- do-while語句:循環(huán)體中語句至少被執(zhí)行一次
- while語句
- for語句
- for-in語句 可以用來枚舉對象的屬性等
//枚舉BOM中window對象的所有屬性
for(var propName in window){
document.write(propName);
}
//最后先確認(rèn)被循環(huán)的對象值不是null或undefined稽寒。
-
label語句
這個(gè)是可以在代碼中添加標(biāo)簽,一遍將來使用的樣子趟章。
//eg://標(biāo)簽由break或continue引用
start:for(var i=0;i<count;i++){alert(i)}
- break和continue語句
- with語句 將代碼的作用域設(shè)置到一個(gè)特定的對象中杏糙。大量使用會(huì)導(dǎo)致性能下降。嚴(yán)格模式下不允許使用尤揣。
- switch語句 特色是switch可以是任何數(shù)據(jù)類型:字符串搔啊、對象等,case甚至可以是變量或表達(dá)式北戏。比較值時(shí)使用的是全等操作符负芋,因此不會(huì)有類型轉(zhuǎn)換。
函數(shù)
function關(guān)鍵字
不必定義是否返回值
return可以不煩會(huì)任何值,自動(dòng)返回undefined
嚴(yán)格模式有關(guān)鍵字限制
命名參數(shù)只提供便利旧蛾,不是必須莽龟。因?yàn)橐詳?shù)組的形式傳遞,可以用arguments對象像數(shù)組一般訪問锨天。類似重載毯盈,但ECMAscript沒有重載啊。
沒傳遞值的命名參數(shù)自動(dòng)賦予undefined
嚴(yán)格模式對arguments對象有限制病袄,例如設(shè)置了arguments[1]=10搂赋,對應(yīng)位置的命名參數(shù)沒有被傳值的話還是undefined。
同名后定義的函數(shù)覆蓋先定義的函數(shù)啊益缠,沒法重載脑奠。