!在 javascript 中发挥作用?
! function in javascript?
我为我的愚蠢问题道歉,我不擅长 javascript 和 angularjs。我一直在参考一些项目的代码,对此我真的很困惑,它到底是什么 !function(a,b,c){}(x,y,z)。我以前从未见过它。我不擅长 javascript 也不擅长 angularjs。感谢大家的帮助!
!function (e, n, t) {
"use strict";
// code
}(window, angular, jQuery)
它只是简单地告诉 js 忽略这个函数并且
它使它像这样未定义:
function Demo(){
console.log('log something');}
输出将是:
log something
但是 如果你在函数前放一个 !
结果会是:
Demo is not defined
这是一种立即执行匿名函数的 hacky 方法。如果您要正常定义它(以 function
开头的行,那么它会立即将该函数提升为 函数语句 并强制您正常调用它。因为 ! 是在它前面,让编译器将它评估为 函数表达式 ,可以立即调用。这里的感叹号是布尔值 not
。括号或加号也可以。
这将是等效的代码:
(e,n,t) => { /** */ }(window, angular, jQuery);
如愿
(function (e,n,t) { /** */ })(window, angular, jQuery);
因为括号也会使该行被评估为表达式。
正在定义匿名函数,然后用参数window, angular, jQuery
调用,在函数体内变成e,n,t
。
旁注:我不建议编写这样的函数,因为它是不常见的语法
我为我的愚蠢问题道歉,我不擅长 javascript 和 angularjs。我一直在参考一些项目的代码,对此我真的很困惑,它到底是什么 !function(a,b,c){}(x,y,z)。我以前从未见过它。我不擅长 javascript 也不擅长 angularjs。感谢大家的帮助!
!function (e, n, t) {
"use strict";
// code
}(window, angular, jQuery)
它只是简单地告诉 js 忽略这个函数并且
它使它像这样未定义:
function Demo(){
console.log('log something');}
输出将是:
log something
但是 如果你在函数前放一个 !
结果会是:
Demo is not defined
这是一种立即执行匿名函数的 hacky 方法。如果您要正常定义它(以 function
开头的行,那么它会立即将该函数提升为 函数语句 并强制您正常调用它。因为 ! 是在它前面,让编译器将它评估为 函数表达式 ,可以立即调用。这里的感叹号是布尔值 not
。括号或加号也可以。
这将是等效的代码:
(e,n,t) => { /** */ }(window, angular, jQuery);
如愿
(function (e,n,t) { /** */ })(window, angular, jQuery);
因为括号也会使该行被评估为表达式。
正在定义匿名函数,然后用参数window, angular, jQuery
调用,在函数体内变成e,n,t
。
旁注:我不建议编写这样的函数,因为它是不常见的语法