例如:如果定义两个名字相同的函数,不管参数个数,后面的函数会覆盖前面定义的函数:
上面的 test 函数始终调用第二个 test(obj) 函数。
没有传入的参数会被当为null和undefined处理。
问题 :<script>
var a="aaa" // ->声明 全局变量 a
function add(e){ // ->声明 函数 add() ,声明传参 局部变量 e
e="bbb" // ->重新赋值给 局部变量 e
return e // ->将形参 局部变量 e 的值返回
}
add(a) // ->调用 函数 add() , 将 全局变量 a 传入
alert(a) // ->弹框输出 全局变量 a(此时 全局变量 a 的值仍然是 'aaa' )
</script>
回答 :
因为 函数 add() 仅仅被声明调用而函数返回值没有被任何变量或对象接收...
所以 函数 add () 的返回值被自动回收...
你可以将 add () 返回值赋值给予 全局变量 a
语法 :
a = add(a) // ->调用 函数 add() , 将 全局变量 a 传入,将 函数 add() 的返回值 'bbb' 赋值给予 全局变量 a
window.alert(a)// ->弹框输出 全局变量 a(此时 全局变量 a 的值是 'bbb' )
5个,这里没有什么疑问的!从形式上看很看是两个的,因为有二个为一组做为一个对象,有三个为一组做为一个对象,共有两个.所以应该说是两个,而从我的感觉当中这样是不对的,因为在JS中不存在(exp1,exp2)这样的定义方法,他不是{1,2}而是(1,2),而且()的做用除了VB中的索引外,在JS中只是改变了运算符的优先顺序,而这里改变的显然是,运算符的优选顺序,而,运算本身的优选顺序是自左向右,所以这里除了改变顺序达到一个特殊目的,但如果不考虑这个特殊目的,那么,加了括号跟不加是没有区别的.所以这里的参数是五个而不是两个!
当然你完全可以做一个验证:定义一个有五个形参的函数,然后加括号传值,看一下是否成功!