2.JS函数
JS函数创建类型:
构造函数:
将代码语句以字符串形式传递给构造函数 var fun = new Function("console.log("Hi");");
函数声明: (类似于声明变量 “var”)
function fun ([arg1, arg2...]) {语句}
利用函数名调用:fun();
函数表达式(匿名函数):
function([arg1, arg2...]) {语句}
var fun = function([arg1, arg2...]) {语句}; // 赋值语句结尾需加“;”
利用变量名调用:fun();
作用域(变量的作用的范围):
全局作用域(直接编写在script标签中的JS代码)
全局作用域中的变量都是全局变量,在页面的任意的部分都可以访问
在全局作用域中有一个全局对象window
“变量”都会作为“window对象的属性”保存
var a = 1;
console.log(window.a);
“函数”都会作为“window对象的方法”保存
function fun() {}
window.fun();
函数作用域(相当于小全局)
在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量
当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用,如果没有则向上级作用域中寻找
在函数中要访问全局变量可以使用window对象
function fun() {
console.log("a = " + window.a);
}
在函数中,不使用“var”声明的变量都会成为“全局变量”,相当于:window.a = 1;
function fun() {
a = 1;
}
console.log(a); ➡ 1
定义形参就相当于在函数作用域中声明了变量
声明提前:
变量的声明提前:
“var”关键字声明的变量, 会在所有的代码执行之前被声明(但是不会赋值)
var a = 1;
但是如果声明变量时不使用“var”关键字,则变量不会被声明提前
a = 1;
函数的声明提前:
“函数声明”形式创建的函数,它会在所有的代码执行前被创建,所以可以在函数声明前来调用函数
function fun() {}
“函数表达式”创建的函数,不会被声明提前,所以不能在声明前调用
var fun = function() {};