JavaScript是一门基于对象的编程语言。
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
变量
ECMAScript的变量是松散类型的,松散类型就是可以用来保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符而已。
用var 操作符定义的变量将成为定义该变量的作用域中的局部变量。
name = 'Alice'; //全局变量 function foo() { var first = 'hello'; //局部变量 second = 'world!' //全局变量 }
数据类型
鉴于ECMAScript 是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof 就是负责提供这方面信息的操作符。
var message = "hello world!"; console.log(typeof message); //string console.log(typeof(message)); //string console.log(typeof(123456)); //number
Undefined类型
Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对变量赋值时,这个变量的值就是undefined。
对未初始化的变量执行typeof 操作符会返回undefined 值,而对未声明的变量执行typeof 操作符同样也会返回undefined 值。
Null类型
Null类型也只有一个值,特殊的值是null。null值表示一个空对象指针;如果变量设置未null,就相当于这个变量以后只能存放对象,只不过现在没有存放对象。
typeof 操作符检测null 值时会返回"object"。
Boolean类型
Boolean类型只有两个字面值true和false,并且是区分大小写的;True 和False(以及其他的混合大小写形式)都不是Boolean 值。
Number类型
Number类型包含整数、浮点数值和NaN,
- 整数可以通过十进制、八进制(0开头)和十六进制(0x开头)来表示。
- 浮点数值中必须包含一个小数点,浮点数值的最高精度是17 位小数,但在进行算术计算时其精确度远远不如整数。例如,0.1 加0.2的结果不是0.3,而是0.30000000000000004。
- NaN,即非数值(Not a Number)是一个特殊的数值,用于表示一个操作数原本是要返回一个数值,但未如愿返回一个数值,就会返回NaN(这样就不会抛出错误了)。任何涉及NaN 的操作(例如NaN/10)都会返回NaN;NaN 与任何值都不相等,包括NaN 本身。ECMAScript 定义了isNaN()函数,确定这个参数是否“不是数值”。
console.log(isNaN(NaN)); //true console.log(isNaN(10)); //false(10 是一个数值) console.log(isNaN("10")); //false(可以被转换成数值10) console.log(isNaN("blue")); //true(不能转换成数值) console.log(isNaN(true)); //false(可以被转换成数值1)