1) ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据
2) var 操作符定义的变量将成为定义该变量的作用域中的局部变量
- function test(){
- var message = "hi"; // 局部变量
- }
- test();
- alert(message); // 错误!
3) 数据类型
5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number
和String。还有1 种复杂数据类型——Object
typeof 判断数据类型 typeof null = "object",因为特殊值null 被认为是一个空的对象引用
Undefined:
Null: 如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null 而不是其他值
undefined 值是派生自null 值的
alert(null == undefined);
Boolean:
var message = "Hello world!";
if (message){
alert("Value is true");
}
等价于
if(Boolean(message))
存在自动类型转换
Number:
由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript 会不失时机地将浮点数值
转换为整数值。显然,如果小数点后面没有跟任何数字,那么这个数值就可以作为整数值来保存
浮点数值的最高精度是17 位小数,但在进行算术计算时其精确度远远不如整数。例如,0.1 加0.2
的结果不是0.3,而是0.30000000000000004
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数
未返回数值的情况
a. 任何涉及NaN 的操作(例如NaN/10)都会返回NaN
b. NaN 与任何值都不相等,包括NaN 本身
isNaN()
isNaN()确实也适用于对象。在基于对象调用isNaN()
函数时,会首先调用对象的valueOf()方法,然后确定该方法返回的值是否可以转
换为数值。如果不能,则基于这个返回值再调用toString()方法,再测试返回值。
String:
String 类型用于表示由零或多个16 位Unicode 字符组成的字符序列
ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变
某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量,