数据类型
JavaScript数据类型分为两类:
原始类型(primitive type):数字、字符串、布尔值
* 特殊原始值:null(空)、undefined(未定义)
对象类型(object type):
对象是属性的集合
null与undefined
> 其均表示"值的空缺",两者往往可以互换
> null == undefined 返回 true , null === undefined 返回false
> 都不包含任何属性和方法
> 使用“.” 和 “[]” 来存取这两个值的成员或方法都会产生类型错误
null
> null 是javascript关键字,表示一个特殊值,“空值”,
> typeof null = “object”
> null是一个特殊的对象值,含义是“非对象”,可表示数字、字符串和对象是“无值”
undefined
> undefined是预定义的全局变量(不是关键字),其值为“未定义”
> 在ECMAScript 3中,undefined是可读/可写的变量,可给它赋任意值,在ECMAScript 5中修改为只读,
> typeof undefined = "undefined",表明该值是这个类型的唯一成员
全局对象
全局对象的属性是全局定义的符号,JavaScript程序可以直接使用
全局属性:比如undefined,Infinity,NaN
全局函数:比如isNaN(),parseInt(),eval()
构造函数:比如Date(),RegExp(),String(),Object(),Array()
全局对象:比如Math、JSON
原始值与对象引用
原始值:undefined、unll、布尔值、数字、字符串
* 不可更改
* 原始值的比较是值的比较
对象(又称引用类型):数组、函数
* 对象的比较并非值的比较,即使两个对象包含同样的属性及相同的值,他们也是不相同的,各个索引元素完全相同的两个数组也不相等
* 除了null 和 undefined之外的任何值都具有toString()方法,该方法的执行结果通常和String()方法的返回结果一致。
对象 --> 字符串 : .toString();
对象 --> 数字: .valueOf();
函数作用于
JavaScript 的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的,这意味着在声明之前甚至已经可用。
function test1(o) {
var i = 0;
if( typeof o === "object") {
var j = 0;
for(var k = 0; k < 10; k++) {
console.log(k); //0~9
}
console.log("k:"+k); //k:10
}
console.log("j:"+j); //j:0
}
var scope = "global";
function test2() {
console.log(scope); //undefined
var scope = "local";
console.log(scope); //local
}