第三章
- 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函数不能重载。通过检查传入函数中的类型和数量并作出不同的反应,可以模仿方法的重载。