当函数返回布尔结果时,函数返回undefined

时间:2015-12-10 20:11:47

标签: javascript

我想让web/bundles/app/img返回true,但它返回undefined。我的理解是<link rel="stylesheet" href="{{ asset('bundles/app/css/style.css') }}"> 应该与checkNull1的工作方式完全相同,而是使用变量来存储返回结果。我做错了什么?

感谢。

checkNull2

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

2 个答案:

答案 0 :(得分:4)

你会陷入困境和解析#34; quirk&#34;。

在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); 
}

答案 1 :(得分:1)

你的缩进导致了错误的行为。像这样的东西会起作用:

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

在Javascript中注意分号:http://es5.github.io/#x7.9