gpt4 book ai didi

javascript - 为什么两个相同的语句返回不同的结果,只是用括号括起来一个而不是另一个?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:35 24 4
gpt4 key购买 nike

为什么两个相同的语句返回不同的结果,只是用括号括起来一个而不是另一个?

function foo(bar){
return !bar;
}(false) ? false : true; // returns true

(function foo(bar){
return !bar;
}(false) ? false : true); // returns false! why?!

最佳答案

function foo(bar){
return !bar;
}
(false) ? false : true

就像在说:

if(false){
//false
} else {
//true
}

您的函数未被调用,您的条件为 false,这意味着它返回第二条语句(//true)。


第二个很不一样

(function foo(bar){
return !bar;
}
(false) ? false : true)

是这样的:

function foo(bar){
return !bar;
}

var temp = foo(false)

if(temp){
//false
} else {
//true
}

你在技术上创建了一个自执行函数 immediately invoked function expressions (IFFE)false 作为参数。它返回的任何内容都受条件限制。所以:

  • 你传递了false作为参数
  • 该函数返回一个反转,即true
  • 对返回值进行评估,并且由于返回值是 true,它会执行您条件的第一条语句(具有 //false)

自执行函数 immediately invoked function expressions (IFFE)通常有这些形式,并且通常用于形成闭包(这超出了这个问题的范围)

var result = (function(innerParam){
//function body
}(passedParam));

and

//this form commonly seen in jQuery plugins
var result = (function(innerParam){
//function body
})(passedParam);

关于javascript - 为什么两个相同的语句返回不同的结果,只是用括号括起来一个而不是另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9553536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com