函数
对函数参数没有任何类型检查(弱类型),在必要时在函数内加上类型检查(typeof);
JavaScript的函数参数无法设置默认值(可以通过检查参数,当为undefined时设置一个值
function functionname(someVar){ if(typeof someVar =='undefined'){ someVar = 'default value';
} }
),如果函数调用的时候没有传递参数值,那个参数的值就是undefined,可以通过这一知识点确认参数变量不为undefined来检测函数参数是否接受到值
1 function functionName(someVar){ 2 if(typeof someVar =='undefined'){ 3 }else{
} 4 }
。
当函数调用时要跳过参数进行下一个参数赋值,使用undefined代替忽略的参数
1 function functionName(a,b,c){ 2 } 3 functionName(a,undefined,c);
。
简单值(数字,字符串,布尔值)是按值传递,不改变函数外的变量;而对象和数组按照引用传值,因为是对原变量的引用,这值将同步改变,这样的好处在于:复杂的数据类型可以作为容器将复杂的数据带到函数外。
函数都是通过return语句返回值(只执行一次),如果函数没有return语句及所用return语句不包括返回值,自动返回undefined。
在函数外定义的变量具有全局作用域,函数的参数自动具有函数(局部)作用域。只要使用var关键字,在函数中声明的变量就具有函数作用域(否则为全局)。当一个全局变量和局部变量同名是优先使用局部变量。