变量
定义变量时要使用var操作符,后跟变量名。如 var=message; 该变量可以保存任何值。未经过初始化的变量,会保存一个特殊的值:undefined 。
要注意的是var操作符定义的变量是该变量作用域中局部变量。如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁,不过可以省略var操作符从而创建一个全局变量。
数据类型
有5中简单数据类型:Undefined,Null,Boolean,Number,String还有一种复杂数据类型Object。Object本质上是由一组无序的名值对组成的。
typeof操作符
用于检测给定变量的数据类型。
var message=“some string”;
alert(typeof message); //返回String
Undefined类型
Undefined类型只有一个值,即特殊的undefined。
Null类型
Null类型也只有一个值,null。表示一个空对象指针。
Boolean类型
有true和false两个值,区分大小写。
要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()
var m=“hello”;
var mAsBoolean=Boolean(m);
字符串m被转换成了一个Boolean值,该值被保存在mAsBoolean变量中。
Number类型
表示整数和浮点数值。
数值范围:ECMAScript能够表示的最小数值保存在Number.MIN_VALUE中——在大多数浏览器中,这个值是5e-324。能够表示的最大数值保存在Number.MAX_VALUE中——在大多数浏览器中,这个值是1.7976931348623157e+308。如果得到了一个超出JavaScript数值范围的值,那么这个数值将被自动转换成特殊的Infinity值。
NaN,即非数值,是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。
数值转换:有三个函数能把非数值转换成数值:Number(),parseInt(),parseFloat()。第一个函数可以用于任何数据类型,而另外两个函数则专门用于把字符串转换成数值。
Number()函数转换规则:
Boolean true返回1,false返回0.
数字值,只是简单的传入和返回。
null值,返回0.
undefined,返回NaN。
字符串:都转化成十进制,“001”会转换成1(去掉前面的0)
parseInt()转换规则:
能自动检测多少进制的数,从开头第一个不是数字的字符开始解析,空字符串会返回NaN。
指定基数(即指定多少进制)
var m=parseInt(“AF”,16); //175
parseFloat()和parseInt类似,负责检查浮点数。
String类型
用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。可以用“”或‘’表示。
1.字符字面量
\n 换行 \t 制表 \b 退格 \r 回车 \f 进纸 \斜杠 ' 单引号 " 双引号 \xnn 以十六进制代码nn表示的一个字符
\unnnn 以十六进制代码nnnn表示的一个Unicode字符。
这些字符字面量可以出现在字符串中的任意位置,被作为一个字符来解析。
2.字符串的特点
字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串。然后再用另一个包含新值的字符串填充该变量。
var lang=“java”;
lang = lang+“Script”;
3.转换为字符串
第一种 toString()方法。多数情况下,toString()不必传递参数,但是可以传递输出数值的基数。(以多少进制输出)。
在不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String(),这个函数能够将任何类型的值转换成字符串。
Object类型
创建Object类型的实例并给它添加属性和(或)方法,就可以创建自定义对象。 var o = new Object();
Object的每个实例都具有下列属性和方法:
- constructor :保存着用于创建当前对象的函数。
- hasOwnProperty:用于检查给定的属性在当前对象实例中是否存在。作为参数的属性名,必须以字符串形式指定(o.hasOwnProperty(“name”))。
- isPrototypeof(object):用于检查传入的对象是否是当前对象的原型。
- propertyIsEnumerable:用于检查给定的属性是否能够使用for-in语句来枚举。作为参数的属性名必须以字符串形式指定。
- toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
- toString():返回对象的字符串表示
- valueOf():返回对象的字符串,数值或布尔值表示,通常与toString()方法的返回值相同。
操作符
一元操作符
只能操作一个值的操作符叫做一元操作符。
1.递增和递减操作符
和C语言相同 前置++ -- 后置++ --
2.一元加和减操作符
+不改变数值 -变为负
位操作符
对于有符号的整数,32位中的前31位用于表示整数的值。第32位用于表示数值的符号,0表示整数,1表示负数。比如18用二进制表示是10010.这是五个有效位,这5位本身就决定了实际的值。负数同样以二进制码存储,但使用的格式是二进制补码。按位非 ~ 按位与 & 按位或 | 按位异或 ^
左移<< ,在向左移位后,原数值的右侧多出了5个空位。左移操作会以0来填充这些空位。
有符号的右移 >>和左移相反,但是空位用0填充,填充和不填充一样。
无符号的右移>>>对于正数的无符号右移和有符号右移结果相同,负数不同。
其它操作符与C语言相同。
语句
if语句,do-while语句,while语句,for语句,switch语句和C相似
for-in语句
是一种精准的迭代语句,可以用来枚举对象的属性。
for(var propName in window){
document.write(propName);
}
使用for-in循环来显示了BOM中window对象的所有属性。
label语句
使用label语句可以再代码中添加标签。
语法 label:statement
实例:start:for(var i=00;i<count;i++){
alert(i);
}
定义的标签可以再将来由break或continue语句引用。加标签的语句一般与for语句等循环语句配合使用。
break和continue语句
和C语言相似,不过可以在continue 后面加定义的标签,可以跳转到相应的位置。
with语句
with语句的作用是将代码得作用域设置到一个特定的对象中。
定义with语句的牟迪主要是为了简化多次编写同一个对象的工作。如:
var qs = location.search.substring(1);
var hostName=location.hostname;
上面几行代码都包含location对象,如果使用with语句,可以改写成:
with(location){
var qs = search.substring(1);
var hostName=hostname;
}
函数
ECMAScript中的函数使用function关键字来声明,后跟一组参数以及函数体。基本语法为:
function functionName(arg0,arg1……){
statments
}
在函数定义时不必指定是否返回值。实际上,任何函数在任何时候都可以通过return语句来实现返回值。
没有重载,如果定义了两个名字相同的函数,则改名字只属于后定义的函数。