JavaScript(6)函数
1.实参、形参
function add(a,b) {
return a + b
};
add(1,2);
a,b 形参
1,2 实参
2.作用域
(1)全局作用域
- 直接编写在js标签里的代码,都在全局作用域
- 在页面打开时创建,在页面关闭时销毁
- 有一个全局对象window,可以直接使用
- 任意位置都可以访问到
在全局作用域中,创建的变量都会作为window对象的属性得以保存
1⃣️变量的声明提前:
-
使用var关键字声明的变量,会在所有代码执行之前被声明。
-
如果没有使用var关键字,变量不会被声明提前。
2⃣️函数的声明提前:
使用函数声明创建的函数,会在所有代码执行之前被创建。
函数(){}
所以可以在函数声明之前来调用函数。
(2)函数作用域
- 调用函数时,创建的作用域,执行完毕后,函数作用域销毁。
- 执行函数时,会自行创建作用域,是相互独立的
- 函数作用域可以访问到全局作用域的变量,反之不行
- 当在函数作用域中操作一个变量时,会逐层向上寻找
- 就近原则,在函数中先寻找,再往上寻找
3.立即执行函数
function(){
console.log("1");
}();
(function(a){
console.log(a);
})(123) //立即执行
-
不为函数命名,避免了污染全局变量。
-
立即执行函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。
-
封装变量。
var array = [];
for(var i=0; i<6; i++){
array[i] = function(){
console.log(i)
}
}
array[2]();//i=6
for(var i=0; i<6; i++){
(function(ii){
array[i] = function(){
console.log(ii) // 0、1、2、3、4、5
}
})(i) //立即执行函数
}
array[2]();//2