gpt4 book ai didi

javascript - 函数在应该返回 bool 结果时返回 undefined

转载 作者:行者123 更新时间:2023-11-30 08:33:45 24 4
gpt4 key购买 nike

我试图让 checkNull1 返回 true 但它返回未定义。我的理解是 checkNull2 的工作方式应该与 checkNull1 完全相同,只是使用变量来存储返回结果。我做错了什么?

谢谢。

function checkNull1(obj) {
return
(obj.a === null &&
obj.b === null &&
obj.c === null)
;
}

function checkNull2(obj) {
var isNull =
(obj.a === null &&
obj.b === null &&
obj.c === null)
;

return isNull;
}

function checkNull3() {
var nullObj = null;
return nullObj === null;
}

var object1 = {};
object1.a = null;
object1.b = null;
object1.c = null;

console.log("checkNull1: " + checkNull1(object1));
console.log("checkNull2: " + checkNull2(object1));
console.log("checkNull3: " + checkNull3());

JSFiddle:http://jsfiddle.net/Ravvy/ah8hn2qy/

最佳答案

您陷入了词法分析/解析“怪癖”。

在 JavaScript 中有一个叫做 Automatic Semicolon Insertion 的东西或简称 ASI。基本上这意味着 JavaScript 引擎将尝试通过为您插入 ; 来为您修复某些部分代码,并在可能的地方终止语句。returnbreakthrowcontinue 等语句在尾随换行符时总是插入分号由解析器找到。

你的函数被困在了这里。引擎真正做的是这样的:

function checkNull1(obj) {
return;
// Code below will not be used. it's dead.
}

因此解决方法是将条件向上移动到与 return 相同的行和更长期的修复,即使在这个例子中没有违反这一点,但要记住始终以分号结束语句,即使它有时是可选的。

function checkNull1(obj) {
return (obj.a === null &&
obj.b === null &&
obj.c === null);
}

关于javascript - 函数在应该返回 bool 结果时返回 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34210867/

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