问:通常,JQuery插件是这样编写的
(函数($){
// ...
})(jQuery);
今天我看到bootstrap的JavaScript组件是这样写的
!function($){
// ...
}(window.jQuery);
为什么加上“!” 到前面来?
答:众所周知,函数有两种声明方式
Function fnA () {alert ('msg');}// Declarative Definition Function
Var fnB = function () {alert ('msg');}// function assignment expression defines function
建筑物所有者问题中出现的两个功能是匿名功能。通常,调用方法的方式是FunctionName(),
但是,如果尝试在定义函数的末尾添加(),则解析器将无法理解。
function msg(){
alert('message');
}(); // The parser is incomprehensible
定义函数的调用方式应该是MSG();那么为什么用()包装函数的主体部分呢?
最初,使用括号定义函数的主体,解析器会将定义的函数称为函数表达式。也就是说,任何可以将函数转换为函数表达式的方法都可以使解析器正确调用定义的函数。和!那就是其中之一,而+ – | | 具有此功能。
另外,使用!可能更多是一个习惯问题,运营商不同,性能也有所不同。
答:为了省略角色...
//以这种方式编写将导致错误,因为它是一个函数定义:
Andy于 2年前回应
可以在前面添加〜。实际上,有几个一致性可以确保匿名函数被立即声明和执行。
答:var hi = function(){alert(“ hi”)};
hi();
等于…
(function(){alert(“ hi”)})();
!,+和()可以替换为相同的效果。
!function(){alert(“ hi”)}();
从()中保存一个字符,或者看起来比()更好。