类型、值和变量
JavaScript中的数据分为两类:原始类型(primitive type)和对象类型。
原始类型包括:数字、字符串和布尔值
javaScript中有两个特殊的原始值:null(空)和undefined(未定义),代表了各自特殊类型的为一的成员。
对象是属性的集合,每个属性都由“名/值对”构成,普通的javascript对象是命名值的无序集合
数组(array)是一种特殊的对象,表示带编号的值的有序集合
数字
javascript不区分整数值和浮点数值。所有的数字都用浮点数值表示
1.整型直接量
支持使用一个数字序列表示一个十进制整数
也支持16进制整型直接量
2.浮点型直接量
传统实数写法:整数部分、小数点、小数部分
指数计数法:前面的实数乘以10的整数幂
3.javaScript运算符
+、-、*、/、%
其他运算通过Math对象的属性定义的常量来实现:
4.无穷大和非数字值:Infinity和NaN
NaN有点特殊,它和任何值都不相等,包括自身。不能通过x==NaN判断x是非数值,应当使用x!=x来判断x是否为NaN。函数isNaN与此类似
5.JavaScript通过浮点数的形式只能表示有限的实数,所以在JavaScript中使用实数的时候,得到的常常只是真实值的一个近视表示
6.日期和时间
javaScript语言核心包包括Date()构造函数,用来创建表示日期和时间的对象。日期对象提供了简单的API
文本
字符串string是一组由16为值组成的不可变的有序序列。字符串和数组的索引从0开始
转义字符(\)
7.字符串的使用
加号可以连接字符串
.length可以得到字符串长度
8.模式匹配
JavaScript定义了RegExp()构造函数,用来创建表示文本匹配模式的对象,这些模式被称为“正则表达式”
包装对象
JavaScript对象是一种复合值:它是属性或已命名值的集合。通过“.”符号引用属性值。当属性值是一个函数的时候,称其为方法。通过
o.m()来调用对象o中的方法
9.变量声明
var i;
var sum;
var i,sum;
或者复制的途中声明
声明的重复和遗漏
重复声明变量是合法且乌海的,如果重复声明带有初始化器,那么这就和一条简单的赋值语句没有区别
遗漏声明会报错
10.变量作用域
全局变量拥有全局作用域
局部变量,只在函数内有定义,作用域是局部的。函数参数也是局部变量
在函数体内,局部变量的优先级高于同名的全局变量,如果重名,不特殊说明,全局会被局部遮盖
11.变量的提前声明
var scope="global"; function f(){ console.log(scope);//这里输出的是“undefined",而不熟"global" var scope="local"; console.log(scope); }
你可能会以为第一句会输出”global",其实不然。函数作用域的特征,局部变量在整个函数体始终是有定义的,局部变量会遮掩同名全局变量,这里自动将局部变量的声明提前了。不过赋值还是在第二行。