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等库的朋友肯定见到过这种写法。

转载于:https://www.cnblogs.com/heshan664754022/archive/2013/04/29/3050422.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值