按值传递
Js参数是按值传递的,不会改变传进来的变量的值 如图:
可能会误以为按引用传递的可能性在于:
传进来如果是一个object的话,由于参数和传进来的变量都是一个指向该object内存的指针,所以在函数内增加属性或者是删除属性会跟着改变(ps:清除变量:bb=null 不会改变),但是仍然是按值传递
懒加载:(常用于浏览器检测或者其他函数判断)
方法一加载即执行:return 新函数(通过闭包执行对方法重新定义,加载占用资源)
var lazy=function(a){
if(typeof a==“string”){ return function(a){ return “a is a string”}; }
else if(typeof a==“number”){ return function(a){ return “a is a number”}; }
else if(typeof a==“object”){ return function(a){ return “a is a object”}; }
}(“123”)
方法二惰性执行:
第一次执行的时候有一定的资源消耗
var lazy=function(a){
if(typeof a==“string”){ lazy=function(a){ return “a is a string”}; }
else if(typeof a==“number”){ lazy=function(a){ return “a is a number”}; }
else if(typeof a==“object”){ lazy=function(a){ return “a is a object”}; }
lazy(a)
}
undefined
lazy(124)
undefined
lazy()
“a is a number”