提问人:SSIMPL3 提问时间:9/6/2019 最后编辑:sepp2kSSIMPL3 更新时间:9/6/2019 访问量:69
IF 语句中的检查函数说明
Checking Function inside IF statement explanation
问:
我正在声明一个用作比较的函数。我的问题是:
为什么条件充当语句?
为什么 4 号线有效,而 5 号线不起作用?
我知道这段代码是不切实际和未使用的,但为什么编译器允许这种语法?
谷歌上没有答案。但话又说回来,我可能没有找对地方。
var A = () => console.log(3);
if (A === console.log(1)) {
A();
};
A ? A() : null;
if (A === console.log(1567)) {};
if (B === console.log(1567)) {};
预期输出为:
3
输出为:
1
3
1567
未捕获的 ReferenceError:B 未在 :11:1 处定义
答:
0赞
rici
9/6/2019
#1
表达式的计算结果为 。 不是这样,没有一个比较是真的。console.log(1)
undefined
A
undefined
但是,在返回之前,将打印到控制台。因此,示例中的第一行和第三行输出行来自 和 的计算。undefined
console.log(1)
1
console.log(1)
console.log(1567)
console.log(1)
不是闭合。闭包是 。()=>console.log
1赞
H S
9/6/2019
#2
一行一行的意思——
- 定义为箭头函数的第一行。
A
- 下一行比较 - 从右到左 - 被定义并具有一些值,接下来是函数调用,因此它的值被“评估”。并将返回值与 - 的定义值进行比较,结果证明是假的(是函数引用,而返回)。
A
console.log(1)
A
A
console.log()
undefined
- Out of if - offcourse 被定义,因此它调用 - 因此第二行输出。
A
A()
- 再次比较 - 类似于 point(2)
- 再次比较 - 但没有定义哪个是可投掷的,因此错误和从左到右 - 从未评估过。
B
console.log
问题-
- 条件充当语句 - 这是设计使然 - 尝试 - 它们是代码如果计算为 true/false 的地方,则执行将采取方向。在该区域中有一个语句提供了像 - 或 .
if(console.log())
while(true){}
while(someFuncIfTrue(2)){}
- 第 4 步有效,但第 5 步无效 - point(5) 回答了这个问题。
评论