zoukankan      html  css  js  c++  java
  • Javascript的 函数声明 和函数表达式

    今天再看一篇BLOG的时候,发现那篇文章一直在说函数声明和函数表达式,

    弄得我有点晕了,后来整理了一下。其实这两个概念以前早就用过,只不过是没有注意到它们的名字而已!

    1.

    函数声明:

    function a(){
    
    alert("hello world")
    
    }//这就是一个函数声明

    函数表达式:

    var a=function(){
    
    alert("hello world")
    
    }//这就是一个函数表达式

    那么它们两个有什么区别呢?

    函数的声明的解析是在预执行阶段,也就是浏览器准备执行代码的时候,而函数表达式,如同定义其它基本类型的变量一样,只在执行到某一句时也会对其进行解析

    2.下面是一些看起来很怪异的函数

    ~function a(){  
    
      alert(1111);  
    
    }(); 
    +function a(){  
    
       alert(1111);  
    
    }(); 

    但是当你把~ +去掉后他们又会报一个SyntaxError的错误。这是因为从语法解析的角度看,Javascript不允许在函数声明的后面直接使用小括号,而函数表达式则没有这个限制,通过在函数声明前面加上一个"~“,"+","-","!"操作符,就可以让语法解析器把后面看成是函数表达式,但是不同的操作符性能就不太一样了,如果你想了解的话,可以参考以下博文:http://www.swordair.com/blog/2011/10/714/。其实上面的函数可以这样写。

    var a=function(){
    
     alert(1111);
    
    }();

    但是这样又会出现一个问题,因为你定义了一个变量,它会污染当前的运行环境,从而带来潜在的危险。

    但是如果你不喜欢在前面加上"~“,"+","-","!"操作符,可以按下面这样写,其实这也是很多js库常用的方式。

    (function a(){  
    
        alert(1111);  
    
      })(); 

    相信看过prototype、jquery等库的朋友肯定见到过这种写法。

  • 相关阅读:
    11 对象的构造
    10 问题分析一
    9 新型的类型转换
    8 C++ 中的新成员
    7 函数重载
    6 函数参数的扩展
    5 内联函数
    查找算法总结Java实现
    九大排序算法Java实现
    帝国cms所有一级栏目遍历,如果有子栏目的话,遍历出来
  • 原文地址:https://www.cnblogs.com/heshan664754022/p/3050422.html
Copyright © 2011-2022 走看看