二、javascript基础知识、概念

1、javascript的数据类型:基本数据类型和对象类型。

  ①、基本数据类型:字符串(String)、数值(Number)和布尔值(boolean)。

  ②、对象类型:对象、数组和函数。

  ③、类型转换,通常情况javascript引擎会自动根据上下文来猜测转换,不过要注意自动转换规则(注意:在对象

自动转换成boolean类型时,如果该对象为空(包括null、undefined和""),则转换成false,否则为true)。

  ④、类型检测:查看一个变量或者值的类型可以采用一元运算符typeof或二元运算符instanceof,区别在于后一个比

前一个更严格,例如:

var obj = ['1','2','3'];

alert(typeof(obj2));//打印Object(按理说应该打印Array)

alert(obj2 instanceof Array);//打印true

 2、运算符号,这里只说重点的。

  ①、中括号运算符([]):中括号([])运算符可用在数组对象和对象上,从数组中按下标取值:

a、声明创建空或默认值数组。

var arr = []或var arr = ['aa','bb'];

b、取数组成员值。

arr[0];

c、定义对象成员。

var obj = new Object();

obj['name'] = "张三";

d、取对象成员值。

obj['name']

当然,如果不知道对象obj中有哪些属性,可以通过下面这种方式遍历:

for (var key in obj) {

alert(key + " : " + obj[key]);

}

  ②、大括号运算符({})。

a、正常的组织js语句快,包括函数体。

b、声明并创建对象(一般而言[]用来创建数组,而{}用来创建对象)。

var obj= {name:'张三',sex:'男',age:4}

  ③、点运算符(.)。

a、访问对象内部的元素,相当于用中括号来访问对象内如的元素,要注意,在对象内部属性名本身含有.符号时,此时再

用.符号取访问该属性将会失效,有事还会造成不可预知的错误,因此在不能预知对象内各个属性名的情况下建议

采用[]来访问个元素。

例如:var obj = {people.name:'zhangsan',sex:'男'};

obj.peopel.name//无效

obj['people.name']//有效

  ④、== 和 === 以及 != 和 !==

== 为相等,而===为等同,相等操作符(==)会对两边的操作数做类型转换,而等同(===)则不会,===比==要严格,前一个

不但考虑值还考虑类型,而后一个一般只考虑值。

a、相等运算符(==)

如果操作数具有相同的类型,则判断其等同性,如果两个操作数的值相等,则返回true(相等),否则返回false(不相等)。

如果操作数的类型不同,则按照这样的情况来判断:

null和undefined相等。

其中一个是数字,另一个是字符串,则将字符串转换为数字,在做比较。

其中一个是true,先转换成1(false则转换为0)在做比较。

如果一个值是对象,另一个是数字/字符串,则将对象转换为原始值(通过toString()或者valueOf()方法。

其他情况,则直接返回false。

b、等同运算符(===)

如果操作数的类型不同,则不进行值的判断,直接返回false。

如果操作数的类型相同,分下列情况来判断:

都是数字的情况,如果值相同,则两者等同(有一个例外,就是NaN,NaN与其本身也不相等),否则不等同。

  都是字符串的情况,与其他程序设计语言一样,如果串的值不等,则不等同,否则等同。

  都是布尔值,且值均为true/false,则等同,否则不等同。

  如果两个操作数引用同一个对象(数组,函数),则两者完全等同,否则不等同。

  如果两个操作数均为null/undefined,则等同,否则不等同。

c、!=不等和!==不等同,则与==和===相反,这里不再细说。

相关推荐