Fork me on GitHub

李可

导航

JavaScript系列:函数 自执行 表达式 声明 定义

可用方式

  • (function($) {})(jQuery);

  • !function( $ ){}(jQuery);

  • +function( $ ){}(jQuery);

  • -function( $ ){}(jQuery);

  • ~function( $ ){}(jQuery);


更多方式参考http://swordair.com/function-and-exclamation-mark/

本质解释


function() {}()这么写会报错,因为这是一个函数定义:

修正1:(多了一对括号),调用匿名函数:(function() {})()
修正2: 在前面加上一个布尔运算符(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用!function() {}()
使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。任何何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。
!, +, -,||都有这样的功能。

函数(声明和表达式)个人常用函数声明,因为放在调用的上面还是下面都不出错

函数声明不仅会提升声明,还会提升定义

fun() // 调用成功
function fun() {} 

函数表达式只会提升声明,不会提升定义

fun()  // 有foo这个变量,但它却不是函数,所以调用失败
var fun = function() {}

变量提升

不论函数的表达式还是声明,都是变量(函数字面量),变量(声明)提升

posted on 2016-04-01 11:15  李可在江湖  阅读(238)  评论(1编辑  收藏  举报