js 函数声明和函数表达式
今天我们来讲函数声明和函数表达式
主要从函数定义和两种定义的区别,以及块级作用域来讲
一、函数定义
定义函数有两种方式,一种是函数表达式,一种是函数声明式
//函数声明式 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 function
2、函数表达式的函数名可省略
函数声明必须有函数名是函数被调用的基本要求
var mydiv.onclick=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
其实函数的声明和表达式挺简单的,大家要注意一下里面的区别就比较好了。

浙公网安备 33010602011771号