JavaScript中允许对任何数据进行比较,例如
false == 0 //true
false === 0 ///false
NaN函数:
有一个特殊的值NaN,这个特殊的number值与其他的值都不相等,包括与自身
NaN == NaN // false
唯一能判断NaN的只有isNaN( )函数。
浮点数比较:
1/3 ==(1-2/3) // false
浮点数在运算过程中会出现误差,因为计算机无法精确表示无限循环小数。要计算两个小数是否相等,只能计算它们之差的绝对值,是否小于某个阈值。
null、‘ ’、0及undefined:
null为‘空’的值,‘ ’一个长度为0的字符串,0为一个数值。
数组:
JavaScript的数组可以包含任意数据类型。[1 , 2 , 4 , 'nice' , null , true]
另一种创建数组的方式通过Array( )实现
变量:
在JavaScript中,同一个变量可以被反复赋值,且可以是不同类型的数据(这就是动态语言),但var声明只能有一次
var a = 12;
a = ‘AB’;
console.log(x);
要显示变量的内容,可以用console.log(x),打开浏览器控制台就可以看到结果了。使用console.log( ),而不用alert( )的好处在于可以避免烦人的提示框。
注意: a = 1;
当一个变量没有通过var,而直接声明的时候,它就会自动被声明为全局变量。为了修复这一缺陷,推出了strict模式,在JavaScript的第一行写上“use strict”,注意有些浏览器不支持strict模式。
字符串:
需要注意的是,字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果。
var s = 'nice'
s[0] = m
alert(s) //s仍为nice
字符串常用的几个方法,toUpperCase,toLowerCase,indexOf(搜索指定字符串出现的位置,没有返回-1),substring(返回指定索引区间的子串)
数组:
JavaScript的array可以包含任意数据类型,并通过索引来访问每个元素,通过length可以获得array的长度。注意:直接给length赋值会导致数组的改变。同时给索引赋值,会导致数组的更新。如果索引超出了范围,同样会引起array的变化,中间没有被定义的会显示undefined。
数组的常用方法,indexOf , slice(对应substring),push和pop,push用于向array末尾添加元素,pop用于删除最后一个元素。unshift和shift,unshift用于向头部添加元素,shift用于删除array的第一个元素。sort函数用于对array进行排序。reverse函数反转整个array元素顺序。splice从指定索引位置删除若干元素,再从该位置添加若干元素。concat用于连接两个array,并返回一个新的array,该方法可以接受任意个元素和array。
var arr = ['A','B']
arr.concat(1,3,[4,6]) //['A','B',1,3,4,6]
join函数,将array中的每个元素按照指定的字符串连接起来,并返回一个字符串。如果array有元素不为字符串,将自动转换为字符串后再连接。
对象:
JavaScript对象由一组无序的集合数据类型表示,一般都可以通过Obj.name的形式来访问属性,但当属性名中出现特殊字符串时,应当使用Obj['name']的方法访问。
var student = {
name: jack,
'middle-school': 'No.1 middle school'
}
student['middle-school'] // No.1 middle school
因此,属性名尽量使用标准的变量名,这样就可以通过Obj.prop的形式来访问。另外,当访问一个不存在属性时,不会报错,只会返回undefined。
in方法,可以使用该方法判断对象是否拥有这一属性,但判断时也需注意,这一方法有可能是继承得到的。例如,‘toString’ in student // true,所有对象都有toString方法,因此可以用hasOwnProperty方法。
条件判断:
javasJavaScript判断语句中将null,0,undefined,‘ ’及NaN,一致视为false。
循环:
JavaScript用两种循环,for循环(初始条件,结束条件,递增条件)来执行循环语句块。for循环最常用的是利用索引来遍历数组。while循环与do...while循环。
var arr = [1,2,4,6,7,9]
var i ,x
for (i = 0,i< = arr.length,i++){
x = arr[i];
console.log(x);
}
for ... in 循环,可以把一个对象的属性依次循环出来。for (var key in Obj){...},另外一个用法就是,array对象中每个元素的索引可以被视为对象的属性,因此可以用for...in直接循环出array的索引。
arr = [1,2,3]
for(var i in arr){
console.log(i);
console.log(arr[i]); // 1,2,3
}
Map与Set:
Map的方法有get,set,has。对同一个key多次set值的时候,会更新它的value。
JavaScript的Set很特殊,只能保存key,不能保存value,里面的key不能重复。方法为add(key),delete(key)。Set与array类似,但Set没有索引。
Iterable:
Array,Map,Set都属于Iterable类型,由于for...in循环的缺陷性,故遍历集合最好的方法是forEach( ),使用前需要判断浏览器是否支持。forEach的回调函数会返回这些内容。当不需要返回某些参数时,也可以不写。
var map = new Map([[1,'x'],[2,'y'],[3,'z']])
map.forEach(function(value,key,map)){ //针对map的写法
...//value,key,map
}
map.forEach(function(element,index,array)){ //针对array的写法
...//element,index,array
}
map.forEach(function(element,sameElement,set)){ //针对set的写法
...//element,index,array
}