【问题标题】:How is this working !function(){console.log("hi")}() [duplicate]这是如何工作的!function(){console.log(“hi”)}()[重复]
【发布时间】:2013-05-10 19:52:09
【问题描述】:

我在javascript garden 网站上读到了这篇文章。有人能解释一下它是如何工作的吗?

!function(){console.log("hi")}()

【问题讨论】:

  • ...点击您的问题,阅读它,执行搜索,找到匹配项,复制网址,点击close 链接,粘贴网址,投票关闭...问题是 1 分钟前的问题。
  • @squint - 现在如果你说你是在 iPad 上做的,我现在就开始崇拜你。

标签: javascript anonymous-function function-expression


【解决方案1】:

函数表达式后面的“执行”括号不能合法地完成。一个典型的(更有意义的,IMO)写这个的方式是用更多的括号:

(function(){console.log('hi')})()

通过在函数表达式之前添加!,JS 解释器读取函数然后运行它。这是因为 ! 运算符的优先级与使用最终的 () 调用函数相比

【讨论】:

  • "...不能在函数表达式之后合法地做" 不,它不能在函数声明之后做。调用必须是表达式的一部分。为什么你说括号比! 更“有意义”?
  • 声明。接得好。我应该补充一点,“对我来说”,考虑到括号在其他操作场景(如数学)中的工作方式,它们“捆绑”一个表达式,然后你从内到外工作,这更有意义。
【解决方案2】:

Look at this answer

tl;dr 它定义了一个函数来打印“hi”并立即调用它。

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 2011-10-30
    • 2012-01-26
    • 2013-10-28
    • 2015-03-22
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多