JavaScript的三部分:核心ECMAScript ;文档对象模型DOM;浏览器对象模型BOM。
浏览器是ECMAScript实现可能的宿主环境。
宿主环境不仅提供基本的ECMAScript,同时提供该语言的扩展。
JavaScript数据类型: typeof检测变量类型 ;Undefined未初始化的 ;NULL(用typeof检测是object类型);Boolean ;Number;String ;Object 。
注意:
1. 在任何情况下都不用显示的设置Undefined,但是如果变量没有保存对象就应该明确保存NULL
2. Bolean的字面值true 和false是区分大小写的,True 和False是标识符。
3. 所有的类型都有Boolean 对应的值。
4. Number中八进制和十六进制超出自己范围的时候按照十进制处理。例如:
var num1 = 070//八进制的56
var num2 = 079//无效的八进制,解析为79
5. 永远不要测试某个特定的浮点数值 。例如:0.1+0.2 ==0.3这样永远不能通过测试
6. Infinity 是不能参加运算的。
7. Number中的非数值转换为数值的函数有Number()、parseInt()、parseFloat()。其中Number()用于任何数据类型,但是转换有些不够合理,相比parseInt()、parseFloat()是
专门对数字的处理,两者都是要求第一个数值必须是数字,从数字开始到出现一个非数字结束。
8. ECMAScript中的字符串是不可变的,例如:
var lang = “java”;
lang = lang + “script”;
操作:首先创建有10个字符的新字符串,然后填充,最后把字符串“java ”“script”销毁。
9. 转换字符串两种方法:toString()和String()
10. ECMAScript 的Object中,如果不给构造函数传递参数,则可以省略后面的圆括号 , var o =new Object;
11. Object每个实例都有下列属性和方法:
constructor 保存用于创建对象的函数
hasOwnProperty(propertyName)属性在不在实例中
isPropertyOf(object)传入对象是不是另一对象的原型
propertyIsEnumerable(propertyName)检查给的属性可否进行for-in 语句枚举
toString()
valueof()
label语句:在代码中添加标签
用法:label:statement
例子:start: for(var i =0 ; i< count ;i++)
alert(i);
加标签的语句一般都和for一起使用
函数:
FunctionfunctionName(arg0 ,arg1, ard2 ){
Statements
}
函数定义是不用指出返回类型。但是在函数中有return语句,执行完返回一个值,并且函数立即结束,不执行之后的代码。
函数参数不介意传递多少,也不在乎传递什么类型的,因为参数在内部是用一个数组来表示的,不管多少参数都只有一个数组,而不关心数组有哪些参数,实际上函数通过
arguments对象访问函数数组,从而获取函数的参数arguments[0],arguments[1],arguments[2]。
function sayHi(){
alert (“hello”+arguments[0]+ arguments[1])
}
sayHi(“richard”,”hi”);
命名的参数提供便利,但是不是必须的。使用arguments.length可以知道有多少参数传递。
ECMAScript中是没有重载函数的,因为没有函数签名,参数是包括零或多个值的数组表示的。如果定义两个名字一样的函数,则改名字属于后定义的函数
理解ECMAScript复杂的细节是理解其在web中JAVAScript的关键。