2、函数的创建方法
(1)第一种定义方式:函数声明
这种定义方式,函数不属于任何对象,在js中他始终是默认的全局对象。
fun();函数可以先调用,是因为在js的最顶层,都有一个预编译处理机制。
function fun(){
console.log(3); //return this; 为什么函数会输出函数体中的内容,因为在函数体的最后,默认会有一个 return this 不过也可以修改成其他的返回值 。这里的this指的是全局对象window.
}
fun();//函数必须调用,不调用函数是没有用的。
(2)第二种定义方式:函数表达式(存储在变量中)
赋值匿名函数 自执行函数 作为返回对象
var fun=function(){ (function(){ return function(){
console.log(4); console.log(4); console.log(4);
} }); }
fun();//这里的函数调用,必须写在函数声明的后面、就是说要先声明在使用。
document.body.οnclick=function(){} // 函数表达式
(3)第三种定义方式:构造函数
var fun=new Function(console.log(8));//这种函数可以自调
var fun=Function(); //这两种方式是等价的
(4)函数声明和函数表达式有什么区别呢?
1)、解析器在向执行环境中加载数据的时候,对函数声明和函数表达式是不一样的。
解析器首先会读取函数声明,并且使得这段函数声明代码在任何代码之前都可调用。这就是我们平时所说的函数声明提升。
函数表达式不一样,他必须等到函数解析器执行到他所在的代码块的时候,才会被真正的执行。比较下面2个例子
函数声明会被前置 函数表达式的变量会被提前
function a(){};<-----| //相当于函数声明提前了 var a;<-----| //变量被前置值为undefined
a(); //1 a(); //TypeError: a is not a function
function a(){ var a =function(){
var b = 1; var b = 1;
console.log(b); console.log(b);
}; }
2)、函数没有重载 如果声明了2个同名函数,结果是后面的函数覆盖了前面的函数。
function sun(a){ function sun(a){
return a+100; return a+200;
} }
var result=sum(2) //202
本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记。有不正确之处请各位高手多多指点,一起学习进步。【VX:czlingyun 暗号:CSDN】