今天我们来讲函数声明和函数表达式
主要从函数定义和两种定义的区别,以及块级作用域来讲
定义函数有两种方式,一种是函数表达式,一种是函数声明式
//函数声明式 function fun(arguments){ //..... } //函数表达式 var fun=function(arguments){ //...... }1、变量提升
只有通过函数声明的函数,才会存在变量提升,函数表达式不存在变量提升
sayhi('zhangsan'); function sayhi(name) { alert('name:'+name); } //不会报错,存在变量提升 //执行顺序 //function sayhi(name) //{ //alert('name:'+name); //} //sathi('zhangsan'); sayhello('lisi'); var syhello=function(name){ alert('name'+name); } //报错,sayhello is not a function2、函数表达式的函数名可省略
函数声明必须有函数名是函数被调用的基本要求
var mydiv.οnclick=function(){ alert(123) }
自执行函数
及常说的匿名函数
(function(a) { console.log(a) })(3) //3,这里的(3)将被作为参数传进去,立即执行
js中不存在块级作用域,存在函数作用域
for(var i=0;i<10;i++){} console.log(i);//不会报错10 //原因:变量提升解决方案:利用es6中的语法,let定义
//let定义的变量,存在块级作用域,其作用范围在定义的{}内for(let i=0;i<10;i++){} console.log(i)//10其实函数的声明和表达式挺简单的,大家要注意一下里面的区别就比较好了。
转载于:https://www.cnblogs.com/epines/p/9144917.html
相关资源:数据结构—成绩单生成器