第三章
- ECMAScript中的一切(變量、函數名、操作符)都區分大小寫。
- 未經初始化的變量,會保存一個特殊的值——undefined。
- 在函數中使用var定義一個變量,那麼這個變量在函數退出後就會被銷燬,但可以通過省略var操作符,從而創建一個全局變量:
funtion test(){
message="hi";
}
test();
alert(message);
- ECMAScript中有5種簡單數據類型:Undefined、Null、Boolean、Number和String。還有一種複雜數據類型——Object(本質上是由一組無序的名值對組成的)。由於ECMAScript數據類型具有動態性,沒有必要再定義其他數據類型。
- 嚴格模式爲這門語言容易出錯的地方施加了限制。
- 當typeof操作符返回”undefined“值時,我們知道被檢測的變量還沒有被聲明,而不是尚未初始化:
var message;
alert(typeof message);
alert(typeof age);
- undefined值是派生自null值的,因此ECMA-規定它們的相等性測試返回true:
alert(null==undefined); //true
- 相等操作符(==)會出於比較的目的轉換其操作數。
- 對任何數據類型的值的調用Boolean()函數,總會返回一個Boolean值,返回值取決於其實際類型:
數據類型 |
轉換爲true的值 |
轉換爲false的值 |
Boolean |
true |
false |
String |
任何非空字符串 |
“”(空字符串) |
Number |
任何非零數字值(包括無窮大) |
0和NaN |
Object |
任何對象 |
null |
Undefined |
n/a(not applicable縮寫,意思是不適用) |
undefined |
var num1=Number("Hello world!");
var num2=Number("");
var num3=Number("000011");
var num4=Number(true);
var num1=parseInt("1234blue");
var num2=parseInt("");
var num3=parseInt("0xA");
var num4=parseInt(22.5);
var num5=parseInt("070");
var num6=parseInt("70");
var num7=parseInt("0xf");
var num8=parseInt("0xAF",16);
var num9=parseInt("AF",16);
var num10=parseInt("AF");
var num11=parseInt("10",2);
var num12=parseInt("10",8);
var num13=parseInt("10",10);
var num14=parseInt("10",16);
var num1=parseFloat("1234blue");
var num2=parseFloat("0xA");
var num3=parseFloat("22.5");
var num4=parseFloat("22.34.5");
var num5=parseFloat("0908.5");
var num6=parseFloat("3.125e7");
- ECMAScript中沒有函數簽名的概念,因爲其函數參數是以一個包含零或多個值的數組的形式傳遞的。
- 可以向ECMAScript函數傳遞任意數量的參數,並且可以通過arguments對象來訪問這些參數。
- 由於不存在函數簽名的特性,ECMAScript函數不能重載。通過檢查傳入函數中的類型和數量並作出不同的反應,可以模仿方法的重載。