Javascript Short Circuit未返回正确的值

时间:2016-12-27 22:27:38

标签: javascript php jquery

我有一个js变量,它是通过php在php页面上生成的:

<script type="text/javascript">
   var shadeData = <?php echo $formattedShadeData; ?>;
</script>

此变量仅在一个页面上定义,因此我希望防止其他页面在加载时抛出错误。在我的一个javascript文件中,如果尚未定义变量,我想停止运行代码,所以我一直在尝试:

var shadeData = shadeData || null;

if(!shadeData){ return false; }

然而,这不起作用,我仍然没有定义shadeData。这些行下面的代码中有几个函数使用变量,但理想情况下,当第二行返回false时,这不会运行。

1 个答案:

答案 0 :(得分:1)

您无法在JavaScript程序的全局/顶级范围内使用return

经过轻微调整后,您的想法应该可以正常运行:将所有代码包装在IIFE中。

// If shadeData is already defined and falsey, this is unnecessary. But included for clarity.
var shadeData = shadeData || null;

(function () {
    if (!shadeData) {
        return;
    }
    // From now on within this function, shadeData is truthy.
}());

// shadeData is not necessarily truthy down here.
console.log('shadeData:', shadeData);

在现实世界中,这通常是通过有条件调用的主入口函数(通常名为init)来完成的。

function init() {
    // I am only run when shadeData is truthy.
}
if (shadeData) {
    init();
}