zoukankan      html  css  js  c++  java
  • 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

    其实函数的声明和表达式挺简单的,大家要注意一下里面的区别就比较好了。

    作者:epines
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    C++编写ATM(2)
    【Python排序搜索基本算法】之Dijkstra算法
    Java中List转换为数组,数组转List
    [置顶] 亚信联创实习笔记
    PL/SQL 异常处理程序
    CSS position财产
    malloc()与calloc差异
    Qt5官方demo分析集10——Qt Quick Particles Examples
    栈和堆之间的差
    深入浅出JMS(一)——JMS简要
  • 原文地址:https://www.cnblogs.com/epines/p/9144917.html
Copyright © 2011-2022 走看看