3.1 語法
ECMAScript中的一切變量名和操作符都區(qū)分大小寫。
標識符:變量枷踏、函數(shù)菩暗、屬性的名字,或者函數(shù)的參數(shù)旭蠕。第一個字符必須是字母停团、下劃線(_)或者一個美元符號($)旷坦。使用駝峰式大小寫。
// 這是單行注釋
/*
* 這是多行注釋
*
*/
在整個腳本頂部添加"use strict"佑稠,整個腳本進入嚴格模式秒梅,在函數(shù)頂部添加"use strict",函數(shù)進入嚴格模式舌胶。
3.2 變量
ECMAScript的變量是松散類型的捆蜀,可以用來保存任何類型的數(shù)據(jù),使用var操作符后跟變量名來定義變量幔嫂。
var massage;
// 未經(jīng)過初始化的變量會保存一個特殊的值undefined辆它。
省略var操作符的變量會變成全局變量。
3.3 數(shù)據(jù)類型
對一個值使用typeof操作符可以判斷其類型:
未定義值返回undefined婉烟;
布爾值返回boolean娩井;
字符串返回string;
數(shù)值返回number似袁;
對象或者null返回object洞辣;(null被認為是一個空對象的引用)
函數(shù)返回functiion;
3.3.1 Null類型和Undefined類型
null == undefined // true 因為undefined值是派生自null的昙衅,所以相等性測試返回true
任何非空字符串 == true扬霜,"" == false;
任何非0數(shù)字 == true而涉,0和NaN == false著瓶;
任何對象 == true, null == false啼县;
undefined ==false 材原。
3.3.2 數(shù)值類型
數(shù)字中最大值為 Number.MAX_VALUE,最小值為 Number.MIN_VALUE季眷,使用isFinite()函數(shù)判斷一個數(shù)值是否位于最大最小值之間余蟹。
NaN表示一個本來要返回數(shù)值的操作但未返回數(shù)值的情況。
NaN == NaN // false
使用isNaN()可以判斷一個參數(shù)是否“不是數(shù)值”子刮,傳入?yún)?shù)后威酒,會對參數(shù)進行類型轉(zhuǎn)換,任何不能被轉(zhuǎn)換成數(shù)值的參數(shù)都將使這個函數(shù)返回ture挺峡。
3個函數(shù)可以將非數(shù)值轉(zhuǎn)化為數(shù)值葵孤,Number(),parseInt()橱赠,parseFloat()尤仍。第一個可以轉(zhuǎn)化任何類型,后兩個主要用于轉(zhuǎn)化字符串狭姨。由于Number()在轉(zhuǎn)化字符串時過于復雜且不夠合理宰啦,在處理整數(shù)時一般使用parseInt()鲤嫡。
parseInt()在轉(zhuǎn)換字符串時,會忽略字符串前面的空格绑莺,直到找到第一個非空格字符暖眼,如果第一個字符不是數(shù)字字符或者負號,則返回NaN纺裁,如果第一個字符是數(shù)字字符诫肠,則繼續(xù)解析,直到解析完所有字符或者遇到了一個非數(shù)字字符(小數(shù)點之后的不會被解析欺缘,因為小數(shù)點也是非數(shù)字字符)栋豫。parseInt()還支持第二個參數(shù),表示轉(zhuǎn)換時的進制單位谚殊。
parseInt("AF"); // NaN 默認按10進制轉(zhuǎn)化丧鸯,"AF"是非數(shù)字字符
parseInt("AF",16); // 175 按16進制轉(zhuǎn)化
parseFloat()轉(zhuǎn)化與parseInt()類似,區(qū)別在于解析到遇見一個無效的浮點數(shù)字字符為止嫩絮,即只有第一個小數(shù)點會被解析丛肢。
3.3.3 String類型
ECMAScript中雙引號和單引號表示的字符串完全相同,但左右引號必須匹配剿干。
String類型包含一些特殊的字符字面量蜂怎,用\開頭表示,例如:\n置尔,\r
字符串的長度可以使用length屬性取得
var text = "abc";
console.log(text.length); // 3
數(shù)值杠步,布爾值,對象和字符串值都有toString()方法榜轿,此方法返回相應值的字符串表現(xiàn)幽歼。null和undefined沒有此方法。默認情況下以十進制格式返回數(shù)值的字符串表示谬盐,傳入進制參數(shù)可以按照其他進制單位返回甸私。
var a = 10;
console.log(a.toString()); // "10"
console.log(a.toString(2)); // "1010"
無法確定值是不是null和undefined時可以使用轉(zhuǎn)型函數(shù)String(),傳入?yún)?shù)如果有toString()方法设褐,則返回toString()方法的值颠蕴,如果為null則返回"null"泣刹,如果為undefined則返回"undefined"助析。
3.3.4 Object類型
ECMAScript中對象是一組數(shù)據(jù)和功能的集合。Object類型是所有它的實例的基礎椅您,Object類型所具有的任何屬性和方法也同樣存在于更具體的對象中外冀。
Object類型的每個實例都有下列屬性和方法:
constructor:保存用于創(chuàng)建當前對象的函數(shù)。
hasOwnProperty():用于檢查給定屬性在當前對象實例上是否存在掀泳,而不是存在于原型中雪隧。傳入?yún)?shù)為屬性名的字符串西轩。
isPrototypeOf():用于檢查傳入的參數(shù)對象是否存在于調(diào)用該方法對象的原型鏈上。
propertyIsEnumerable():用于檢查傳入的參數(shù)屬性是否能夠使用for-in枚舉脑沿。
toLocaleString():返回對象的字符串表示藕畔,與執(zhí)行環(huán)境的地區(qū)對應。
toString():返回對象字符串表示庄拇。
valueOf():返回對象的字符串注服、數(shù)值或布爾值表示,通常與toString方法返回值相同措近。
3.4 函數(shù)
函數(shù)不必指定返回值溶弟,任何函數(shù)任何時候都可以通過ruturn語句后跟要返回的值來實現(xiàn)返回值,執(zhí)行完return語句之后函數(shù)會停止并立即退出瞭郑,即return之后的語句不會被執(zhí)行辜御。不帶任何值的return語句將返回undefined。
函數(shù)參數(shù)在內(nèi)部使用一個類似數(shù)組來表示屈张,通過arguments對象來訪問這個參數(shù)數(shù)組擒权。arguments對象的長度由傳入時的參數(shù)個數(shù)決定,不是由定義函數(shù)時的參數(shù)個數(shù)決定阁谆。沒有傳遞值的命名參數(shù)將自動被賦予undefined值菜拓,通過檢查傳入函數(shù)中參數(shù)的類型和數(shù)量并作出不同反應,可以模仿方法的重載笛厦。