1、ECMAScript的变量是松散类型,严格区分大小写。
2、用var操作符定义的变量将成为定义该变量的作用域中的局部变量;省略var操作符,会创建一个全局变量。
3、常用函数
- Boolean():所有类型的值都有与true和false值对等的值。用于将一个值转换为其对等的Boolean值;
- isNaN(a):确定参数a是否“不是数值”;
- Number():数值转换函数;
- parseInt():将字符串转换为NaN或者整数数字;
- parseFloat():将字符串转换浮点数;
- toString():将其他类型转换为字符串形式,null和undefined没有该函数;
- String():将其他类型转换为字符串形式;
- valueOf():返回对象的字符串、数值或布尔值表示,与toString()方法返回值相同;
- hasOwnProperty(propertyName):检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在;
- isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型;
4、with语句的作用是将代码的作用域设置到一个特定的对象中.目的是为了简化多次编写同一个对象的工作;
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.herf;
转化为:
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = herf;
}
5、函数:
function sum(num1,num2){
return num1+num2;
}
- 函数定义时不必指定是否返回值,任何函数再任何时候都可以通过return语句后跟要返回的值来实现返回值;
- 参数:JS中不介意传递进来的参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数,在调用这个函数时未必一定要传递两个参数,乐意传递一个、三个甚至不传参数。之所以会这样,原因是JS中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
- JS没有重载。JS函数没有签名,因为其参数是由包含0或多个值得数组来表示的。没有函数签名,真正的重载是不可能做到的。
模仿重载:通过检查传入函数中参数的类型和数量并作出不同反应。
function doAdd(){
if(arguments.length==1){
alert(arguments[0]+10);
}else if(arguments.length==2){
alert(arguments[0]+arguments[1]);
}
}