function add(number) { alert(number); alert(number + 10); } add(); // 先是弹出undefined,它是js的5种原始值之一, //然后弹出NaN, not a number. add(10,30); //先弹出10,然后弹出20.参数中的30由于没有和它匹配的,所以就自动丢失
在java中,方法的重载的要求是:方法签名一致,参数的类型或者是个数不同,那么在js中对于参数的类型是控制不了的,所以要模拟实现方法的重载只能从个数着手了。在js中给我们内置了一个arguments 参数,我们可以通过它来实现重载的功效。
function add() { if(1 == arguments.length) { alert(arguments[0] + 10); } else if(2 == arguments.length) { alert(arguments[0] + arguments[1] + 10); } } add(10); add(4,6);
js中的对象中还有一个内置参数length,
alert(add.length);返回的是add方法所接收参数的个数。
JavaScript中有五种原始值:Undefined,Null,Boolean,Number,String
Undefined数据类型的值只有一个:undefined
Null数据类型的值只有一个:null
Boolean数据类型的值只有两个:true,false
var s ; alert(s); //undefined 只声明未赋值的时候是undefined
typeof的返回值有五个:undefined,boolean,number,string,object
var s = "ddd"; alert(typeof s); //string var s = new String("dd"); alert(typeof s); //object
对于函数来说,如果其不返回值,那么其返回值就为undefined
function test(){ } alert(test()); //undefined. 当函数没有返回值或者是return;的时候,返回的都是undefined function test(){ return true; } alert(test()); //true function test(){ return true; } alert(test); //打印出方法的所有代码
null与undefined的关系:undefined实际上从null派生而来
alert(undefined == null); //true
对于函数定义中的变量来说,加var表示局部变量,不加var表示全局变量
function test() { var s = "sss"; } test(); alert(s); //报s未定义错误 function test() { s = "sss"; } test(); alert(s); // sss
强烈建议在声明变量的时候要加var,否则可能会造成内存泄露