有关函数的基本内容
函数的两种创建方法
1.构造函数来创建一个函数对象。(但实际开发基本不用)
var fun = new function(){
console("hello,world");
}//只执行到这里的时候,浏览器不会显示hello,world,因为函数此时害没有被调用
fun();//函数调用,函数体中封装的代码按顺序执行,浏览器显示hello,world
2.函数声明来创建函数。(最常用)
function fun2(){//()内存放形参1,形参2,....
console("hello,world");
}
fun2();//函数调用,函数体中封装的代码按顺序执行,浏览器显示hello,world
3.使用函数表达式来创建函数。
var fun3 = function(){
console("hello,world");
}
fun3();
作用域问题–全局作用域
作用域分为全局作用域和函数作用域。
全局作用域:打开窗口创建,关闭窗口销毁
在JavaScript中有一个全局变量window,
每一个变量都以window的属性保存。 window.alert("…") window.fun() 都可。
每一个函数都会以window的方法保存。
变量声明提前
console.log(a);
var a = 10;//显示undifined,不会报错,因为a声明提前,但赋值不会。
//
函数声明提前
使用 函数声明形式创建的function函数(){},他会在所有的代码消失之前就被创建,所以我们可以在函数声明前调用。但是以其他方式(函数表达式)创建的函数则不会。
fun2();
function fun2(){
console.log("hi");
}//浏览器显示hi,函数声明会被提前创建
fun();
var fun = function(){
console.log("hi");
}//浏览器不会显示hi,显示fun is not a function,因为这是以函数表达式的方法创建函数,函数声明不会被提前创建。 死记奥利给!!!
作用域问题–函数作用域
函数作用域:函数调用时创建,函数调用完成销毁。
每调用一次函数会创建一个函数作用域。他们之间相互独立。
函数作用域可以访问全局作用域中的变量,
全局作用域访问不了函数作用域中的变量。
var a = 10;
function fun1(){
alert("a = " + a);
}
fun1();//警示框输出10
函数声明提前变量声明提前在函数中同样适用。函数复制不提前,注意!!!
function fun(){
console.log("c =" + c);
var c = 10
}
fun();//输出undifined
函数内变量优先使用离得近的函数作用域的变量。一级一级向外面的函数作用域找。如果全局作用域中依然没有,则会报错,not defined
函数定义形参就相当于在函数中声明了一个变量。
var e = 10;
function fun(e){
console.log("e =" + e);
}
//fun(20);//输出e = 20
fun();//不给参数则输出undifined!!!只声明没赋值。