3基本概念
3.3变量
var message; //未经初始化,默认为一个特殊值undefined
var message = "hi"; //初始化
var a=1,b="2",c=true;//定义多个变量,逗号分隔
var定义的变量是该变量的作用域中的局部变量
function test(){
var message="hi";//局部变量
}
test();
alert(message);//错误!
省略var,message为全局变量,调用test()后就有定义,不推荐
function test(){
message="hi";//全部变量
}
test();
alert(message);//错误!
3.4数据类型
5种简单数据类型:Undefined,Null,Boolean,Number,String
1种复杂数据类型:Object
3.4.1 typeof
typeof检测数据类型,对一个值使用typeof有可能返回的字符串:
- “undefined” 未定义
- “boolean” 布尔值
- “string” 字符串
- “number” 数值
- “object” 对象或null
- “function” 函数
3.4.2 Undefined类型
只有一个值,undefined。声明变量但未初始化时,就是此值。
3.4.3 Null类型
只有一个值,null。表示空对象指针,因此typeof返回”object”。
3.4.4 Boolean类型
两个值,true和false。
其他数据类型可转换为Boolean类型值,规则如下
数据类型 | 转为true | 转为false |
---|---|---|
Boolean | true | false |
String | 非空字符串 | “”(空字符串) |
Number | 非零数值 | 0和NaN |
Object | 任何对象 | null |
Undefined | 不适用 | undefined |
例子,根据转换规则
var message="hello";
if(message){
alert(message);
}
3.4.5 Number类型
浮点数值计算会有误差
if(a+b==0.3){ //不要做这样的测试
alert("you got 0.3");
}
数值范围:Number.MIN_VALUE 至 Number.MAX_VALUE
超过返回:正或负Infinity Number.NEGATIVE_INFINITY Number.POSITIVE_INFINITY
isFinite()函数可检测是否在数值范围中
NaN 是特殊数值 任何数除以0返回NaN isNaN()函数检测 与任何值不相等,包括自身
数值转换:Number() parseInte() parseFloat()
3.4.5 String类型
3.4.5 Object类型
3.6.8 with语句
大量使用会导致性能下降,不建议使用
3.6.9 switch语句
switch语句可以使用任何类型
case不一定是常量,可以是变量,甚至是表达式
比较值时,使用全等操作符
3.7 函数
3.7.1 理解参数
命名的参数只是提供便利,但不是必需的。在函数中,arguments.length可知道参数长度,arguments[i]可访问参数,从0开始。
3.7.2 没有重载
通过检查传入函数中参数的类型和数量并作出不同的反应,可以模仿方法的重载。