我们都知道全局变量可以在任何地方调用,局部变量只能在函数内部调用。今天突然想到一个问题,函数中的参数没有用var声明,那么它究竟是局部变量还是全局变量,我做了如下实验:
var i = 2;
function test(i) {
i = 5;
console.log(i) // 5
}
test(10);
console.log(i) //2
由此可知,函数的参数是局部变量,在函数内部修改不会影响外部。
那么如果我想在函数内部修改全局变量i呢?可以用window.i ,因为全局变量都是全局对象window的属性,如下:
var i = 2;
function test(i) {
window.i=5;
var foo = 3;
bar = 4;
console.log(i) // 10
}
test(10);
console.log(i) //5
然后我又想到一个问题,如我在函数定义的时候没有定义参数,那么我在调用的时候可以传参数吗?如果可以如何使用传递的参数?如下代码:
function test() {
console.log(arguments) //
}
test(10,"abc",{a:1});
可以通过argument对象获取参数,让我们来看看打印出了什么:
知道怎么调用了,完事。
如有错误,敬请指正。谢谢。