!function () {}();
当前回答
它返回语句的计算结果是否为false。如:
!false // true
!true // false
!isValid() // is not valid
您可以使用它两次将值强制为布尔值:
!!1 // true
!!0 // false
因此,为了更直接地回答您的问题:
var myVar = !function(){ return false; }(); // myVar contains true
编辑:它的副作用是将函数声明更改为函数表达式。例如,以下代码无效,因为它被解释为缺少所需标识符(或函数名)的函数声明:
function () { return false; }(); // syntax error
其他回答
它返回语句的计算结果是否为false。如:
!false // true
!true // false
!isValid() // is not valid
您可以使用它两次将值强制为布尔值:
!!1 // true
!!0 // false
因此,为了更直接地回答您的问题:
var myVar = !function(){ return false; }(); // myVar contains true
编辑:它的副作用是将函数声明更改为函数表达式。例如,以下代码无效,因为它被解释为缺少所需标识符(或函数名)的函数声明:
function () { return false; }(); // syntax error
当我们进行javascript缩小时,这只是为了保存一个字节的数据。
考虑下面的匿名函数:
function (){}
为了使上述函数成为自调用函数,我们通常会将上述代码更改为:
(function (){}())
现在我们添加了两个额外的字符:(和),除了在函数末尾添加()之外,这是调用它所必需的。在缩小过程中,我们通常专注于减小文件大小。因此,我们也可以将上述函数写成:
!function (){}()
两者仍然是自调用函数,我们也保存了一个字节。我们只使用了一个字符!。
功能:
function () {}
不返回任何内容(或未定义)。
有时我们希望在创建函数时立即调用它。您可能会尝试这样做:
function () {}()
但它会导致SyntaxError。
使用!运算符,使其被视为表达式,因此我们可以调用它:
!function () {}()
这还将返回与函数返回值相反的布尔值,在本例中为true,因为!undefined为true。如果您希望实际的返回值是调用的结果,请尝试这样做:
(function () {})()
! 是一个逻辑NOT运算符,它是一个布尔运算符,可以将某个值反转为相反的值。
尽管可以通过在函数之前使用BANG(!)来绕过被调用函数的括号,但它仍然会反转返回,这可能不是您想要的。与IEFE的情况一样,它将返回undefined,当反转时,它将变为布尔值true。
如果需要,请使用右括号和BANG(!)。
// I'm going to leave the closing () in all examples as invoking the function with just ! and () takes away from what's happening.
(function(){ return false; }());
=> false
!(function(){ return false; }());
=> true
!!(function(){ return false; }());
=> false
!!!(function(){ return false; }());
=> true
其他工作的操作员。。。
+(function(){ return false; }());
=> 0
-(function(){ return false; }());
=> -0
~(function(){ return false; }());
=> -1
组合运算符。。。
+!(function(){ return false; }());
=> 1
-!(function(){ return false; }());
=> -1
!+(function(){ return false; }());
=> true
!-(function(){ return false; }());
=> true
~!(function(){ return false; }());
=> -2
~!!(function(){ return false; }());
=> -1
+~(function(){ return false; }());
+> -1
感叹号使任何函数始终返回布尔值。最后一个值是函数返回值的否定值。
!function bool() { return false; }() // true
!function bool() { return true; }() // false
省略!在上述示例中,将是SyntaxError。
function bool() { return true; }() // SyntaxError
然而,实现这一目标的更好方法是:
(function bool() { return true; })() // true
推荐文章
- Babel 6改变了它导出默认值的方式
- 如何配置历史记录?
- ES6模板文字可以在运行时被替换(或重用)吗?
- [Vue警告]:找不到元素
- 可以在setInterval()内部调用clearInterval()吗?
- AngularJS控制器的生命周期是什么?
- 无法读取未定义的属性“msie”- jQuery工具
- 我的蛋蛋怎么不见了?
- JavaScript中的排列?
- JavaScript中有睡眠/暂停/等待功能吗?
- 如何禁用文本选择使用jQuery?
- 如何停止事件冒泡复选框点击
- 如何在PHP中截断字符串最接近于一定数量的字符?
- 向对象数组添加属性
- 如何在Redux应用程序中动态加载代码分割的减速器?