一:函数的创建:
1:函数名 function(){
函数体
}
2:var 函数名=function(){
函数体
}
3:var function=new Function()、、凡是能这样写的,说明Function是构造函数
这里没啥东西,分享一点小知识就是第一种和第二重的区别,第一种创建方式相当于函数的一个声明提升,使得全局任意地方都可以随意调用函数
无论在函数上面还是下面调用,都可以得到下面的结果,都不会出错
但是第二种就不一样了,当代码执行到这个函数时,函数才真正的被定义,在函数上面调用则会出错,显示doAdd不是一个函数,说明它未定义
二:外部事件驱动函数执行问题写函数名,而不是函数名()
这里点击按钮,函数会执行,这里面写的是foo而不是foo(),foo表示整个函数,相当于一个函数指针,当有外部事件驱动时函数会执行,此处如果写成foo(),函数就会直接被调用,点击事件失去了意义,这里也挺好理解的
三:声明提升
分为变量提升和函数提升
变量提升只会提升一个变量名,函数提升则会提升整个函数体
直接输出一个a,会报错
如果在下面定义一个a则不会报错,会显示一个undefined
说明变量名a声明提升上去了,知道在下面有一个a,但是变量值并没有声明上去,函数的声明提升可以看分享的第一个知识点的第一种,就是函数的声明提升
四:arguments 保存了所有实参的一个集合,用在函数的内部
上面的代码运行会出现下面结果
实参传进去会得到各种值
本次分享就到这里,下次分享this指向问题,这个也挺迷的