setTimeout():在一个网页标签中打开,切换标签,缩小浏览器,该方法还是会执行。
JavaScript组成部分:ECMAScript(核心),DOM(文档对象模型),BOM(浏览器对象模型)。
ECMAScript描述了一下内容:
语法,类型,语句,关键字,保留字,运算符,对象。
JavaScript语言特点:
- 区分大小写。
- 变量是弱类型。
- 每行结尾分号可有可无。
- 注释与Java相同。
- 花括号代表代码块
{ }
。
变量
一个var语句可以定义多个变量,类型也不必相同。
var test="hello",age=25;
变量并不一定要初始化,它们是在幕后初始化的。
使用变量之前不必声明,ECMAScript的解释程序遇到未声明过的标识符时,会用该变量名创建一个全局变量。
类型标记法
- a:数组
- b:布尔值
- f:浮点数
- i:整型
- o:对象
- s:字符串
- v:变形(任意性)
- re:正则表达式
- fn:函数
原始值:存储在栈中(undefined,null,boolean,string,number)。
引用值:存储在堆中。
typeof运算符用于判断对象类型,返回变量的类型。
Undefined类型
当变量声明后未初始化时,变量的默认值为undefined。
函数无明确返回值时,返回的也是undefined。
未声明的变量不能用==
等非typeod运算符。
null类型
Null类型的值与Undefined相等。
null==undefined //true
Number类型
八进制首字母:0
十六进制首字母:0x
尽管所有的都可以表示为八进制或十六进制的字面量,但所有数学运算返回的都是十进制结果。
要定义浮点类型,必须包括小数点和小数点后面的一位数字。
浮点字面量在用于计算之前,真正存储的是字符串。
几个特殊的值也被定义为Number类型:
Number.MAX_VALUE和Number.MIN_VALUE。
它们定义了Number值集合的外边界,所有ECMAScript数值都必须在这两个值之间。
计算得出的值不再此列,但其超出此结果会被赋值为无穷,不能再用于其他计算。
转换
转换成字符串:
ECMAScript的类型都是伪对象,有自己的方法和属性。
tostring()返回字符串。
转换从数字:
parseInt() 转成整型
parseFloat() 转成浮点型
只对string类型调用有效,其他类型返回NaN。
parseInt()方法是查看位置0处的字符,判断它是否能转为一个有效数字,如果不是,返回NaN;如果是,检查下一位,重复过程,直到发现是非有效数字。对paresInt()来说,小数点也是无效字符。
parseInt("1234blue") //1234
parseInt("0xA") //10
parseInt("22.5") //22
parseInt("bule") //NaN
强制类型转换
Boolean(value) 空字符串,0,undefined,null会被转成false。
Number(value)
String(value)
Number(value)
- Number(false) //0
- Number(true) //1
- Number(undefined) //NaN
- Number(null) //0
string(value)与tostring()不同在于,对null,undefined强转不会引发错误。
引用类型
如果创建新对象无参数,可以以省略括号。
var o = new Object;
Object类具有下列属性
constructor——对创建对象的函数的引用。
prototype——对该对象的对象原型引用。
Number类
//返回具有指定小数数量的数字表示
.toFixed()
//返回科学计数法
.toExponential()
//返回最意义的预定形式
.toPrecision()
String类
//字符串中的字符个数
.length
//返回指定索引的字符
.charAt()
//返回指定索引的字符编码
/charCodeAt()
//把一个或多个字符串连接到String对象的原始值上
.concat()
.indexOf()
.lastIndexOf()
.slice()
.substring()
/*
返回要获取的子串
参数1:获取子串的起始位置。
参数2:获取子串的终止位置,终止位置的字符不再返回值中。
对于负参数:
slice()会用字符串的长度加上参数,即从后面开始数。
substring()会把其当作0处理。
*/
instanceof运算符
其与typeof相似,不同在于它要求明确确定对象为某种类型。
var oStringObject=new String("hello");
alert(oStringObject instanceof String); //true
delete运算符:
删除对以前的对象属性或方法的引用。
var o=new Object();
o.name="N";
delete o.name;
void运算符:
返回undefined,避免浏览器输出值。
for(var temp in array)语句与foreach相同
ECMScript中的函数不能重载。
arguments对象可以访问传入函数的参数。
Funtion类
var function-name=new Function(arg1,arg2…function-body);
这种形式中,每个arg都是字符串类型。
length属性声明了函数的期望接受参数的个数。
tostring()返回其源码。
闭包:函数能使用函数外定义的变量。
对象基础
有自动回收机制。
令其为null,强制回收。
绑定:把对象接口与对象实例结合在一起的方法。
晚绑定:在编译器或解释程序在运行之前,不知道对象类型,只检查该对象是否支持特性和方法。