js的一些基本概念的总结(1)
1.要理解的第一个概念就是ECMAScript中的一切(变量、函数名和操作符)都区分大小写。
2.语句:在JS中的语句以一个分号结尾;如果省略分号,则由解析器确定语句结尾,如下例所示:
var sum =a+b //即使没有分号也是有效语句,不过不推荐。
var diff =a-b; //有效语句,推荐。
虽然语句结尾的分号不是必须的,但是我们建议任何时候都不要省略它。
虽然条件语句(如If语句)只在执行多条语句的情况下才要求使用代码块,但是最佳实践是始终在控制语句中使用代码块,即使代码块中只有一条语句,例如:
if (test)
alert(test); //有效但容易出错,不要使用
if (test){ //推荐使用
alert(test);
}
3.变量
ECMAScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于保存值的占位符而已。 并且未经过初始化的变量,会保存一个特殊值:undefined。
有一点是需要注意的,就是在用var操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说,如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁。例如:
function test(){
var message ="hi"; //局部变量
}
test();
alert(message); //错误!
因为在这里的massage在函数中使用var定义的,当函数被调用时,就会创建该变量并为其赋值。在此之后,这个变量就会被销毁,因此例子中的下一行代码就会显示错误。不过可以像下面这样省略var操作符,从而创建一个全局变量:
function test(){
message ="hi"; //全局变量
}
test();
alert(message); //“hi”
这个例子就使massage成为了全局变量。只要调用过一次test()函数,这个变量就有了定义,就可以在函数外部的任何地方被访问到,不过这也并不是我们推荐的做法,因为在局部作用域中定义的全局变量很难维护,也会由于相应的变量不会马上就有定义而导致不必要的混乱。
4.数据类型
ECMAScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有一种复杂数据类型:Object,Object本质上是由一组无序的名值对组成的。ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述6种数据中的一个。
(1.)typeof操作符:用来检测给定变量的数据类型。
(2.)Undefined类型:Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。
(3.)Null类型:是第二个只有一个值的数据类型,这个特殊值是null。从逻辑角度看,null值表示一个空对象指针。
(4.)Boolean类型:Boolean类型是ECMAScript中使用的最多的类型,该类型只有两个字面值:ture和false。这两个值与数字值不是一回事,因此ture不一定等于1,而false也不一定等于0。要将一个值转换为其对应的Boolean值,可以直接调用转型函数Boolean(),如下:
var message="Hello world";
var messageAsBoolean=Boolean(message);
在这个例子中,字符串message被转换成一个Boolean值。至于如何判断这个返回值是true还是false,要取决于要转换值的数据类型及其实际值。下表所示:
数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | " "(空字符串) |
Number | 任何非零数字值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
Undefined | n/a | undefined |
注:n/a(或N/A)是not applicable的缩写,意思是不适用。
(5.)Number类型:这种类型使用IEEE754格式来表示整数和浮点数值。
整数
- 十进制:
var intnum=55;
- 八进制:
var octalnum=070; //八进制数表示时在前面加0
- 十六进制:
var hexnum=0xa; //十进制表示时应在前面加上0x,后跟任何十六进制数字,字母大小写无所谓
浮点数
浮点数值就是该数值中必须包含一个小数点,并且小数点后面至少有一位数字。
PS:对于那些极大或者极小的数值,我们可以用e表示法(即科学计数法)表示的浮点数值表示。例如
var floatnum=3.125e7; //等于31250000 即3.125乘10的七次方
NaN,即非数值是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。