javascript高级程序设计第三版 第三章 基本概念

时间:2020-12-29 10:20:31

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 没有重载

通过检查传入函数中参数的类型和数量并作出不同的反应,可以模仿方法的重载。